0

我需要在用户表中获取名称字段

我在控制器中的方法:

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)
4

2 回答 2

0

您需要首先检查活动是否有附加用户:

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

否则,您正在尝试name从非对象获取属性,null这就是您收到消息错误的原因。

于 2018-08-10T15:47:40.050 回答
0

假设您user_idactivities表中引用表,那么您可以在模型users中定义belongsTo关系Activity

活动模型

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

现在使用预加载获取 Activitywith('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'));
}

在此处检查 Eager Loading 文档https://laravel.com/docs/5.6/eloquent-relationships#eager-loading

于 2018-08-10T15:43:50.160 回答