Laravel: получить имя от пользователей таблицы

Мне нужно получить поле имени в таблице пользователей

Мой метод в контроллере:

public function reviewsactivity()
{
    $activity = Activity::orderBy('id', 'DESC')->paginate();
    $users = User::orderBy('id', 'ASC')->pluck('id', 'name');
    return view('reviews.reviewsactivity', compact('activity', 'users'));
}

И вид:

              @foreach($activity as $actividad)
                  <tr>
                      <td>{{ $actividad->description }}</td>
                      <td>{{ $actividad->subject_type }}</td>
                      <td>{{ $actividad->user->name }}</td>
                      <td>{{ $actividad->causer_type }}</td>
                      <td>{{ date('d-m-Y', strtotime($actividad->created_at)) }}</td>
                  </tr>
              @endforeach

Поле в таблице действий: causer_id

И у меня есть следующий журнал:

 Trying to get property of non-object 
 (View: C:\laragon\www\tao\resources\views\reviews\reviewsactivity.blade.php)

есть ли у вас связь между моделями Activity и User?

rkj 10.08.2018 17:38

используйте для этого Relationship. если у каждого действия есть пользователь, используйте отношение ownTo.

Ali Özen 10.08.2018 17:38
0
2
1 696
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Предполагая, что у вас есть user_id в таблице activities, ссылающейся на таблицу users, вы можете определить отношение belongsTo в модели Activity.

Модель деятельности

public function user(){
     return $this->belongsTo(User::class, 'user_id');
}

Теперь получить активность с активной загрузкой с помощью with('user')

public function reviewsactivity()
{
    $activity = Activity::with('user')->orderBy('id', 'DESC')->paginate();
    $users = User::orderBy('id', 'ASC')->pluck('id', 'name');
    return view('reviews.reviewsactivity', compact('activity', 'users'));
}

Проверьте «Неторопливая загрузка документов» здесь https://laravel.com/docs/5.6/eloquent-relationships#eager-loading

Вам нужно сначала проверить, есть ли у активности привязанный пользователь:

<td>{{ !is_null($actividad->user)?$actividad->user->name:'' }}</td>

В противном случае вы пытаетесь получить атрибут name от не-объектного null, поэтому вы получаете сообщение об ошибке.

Другие вопросы по теме