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

Поле в таблице Activity: causer_id

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

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

0

Решение

Если у вас есть 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'));
}

Check Eager Загрузка документов здесь https://laravel.com/docs/5.6/eloquent-relationships#eager-loading

0

Другие решения

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

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

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

0

По вопросам рекламы [email protected]