Мне нужно получить поле имени в пользовательской таблице
Мой метод в контроллере:
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)
Если у вас есть 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
Вам нужно сначала проверить, есть ли у прикрепленного пользователя действие:
<td>{{ !is_null($actividad->user)?$actividad->user->name:'' }}</td>
Еще вы пытаетесь получить атрибут name
от необъекта null
вот почему вы получаете сообщение об ошибке.