我希望向所有用户显示关系。目前我有:
FilterController.php
public function getFilter($sport)
{
$user = Auth::user();
$users = $this->model->getUsersByDiscipline($sport);
return view('filter.' . $sport, compact('user', 'users'));
}
user.php的
public function getUsersByDiscipline($sport)
{
$users = User::with('user_data', 'languages')->where('discipline', $sport)->get();
return $users;
}
我尝试将其显示为:
{{$user->user_data->employment}}
但是有错误:
Property [employment] does not exist on this collection instance
如何正确地做到这一点?
答案 0 :(得分:0)
$users = User::with('user_data', 'languages')->where('discipline', $sport)->get();
通过这样做你将得到$ users 的数组
所以你需要运行一个循环
@foreach($users as $user)
{{ $user->user_data()->employment }}
@endforeach
或者您可以在控件中调试代码
$users = User::with('user_data', 'languages')->where('discipline', $sport)->get();
foreach($users as $user){
dd($user->user_data()); //check what it returns in user_data;
}
答案 1 :(得分:0)
如果employment
是关系,我认为它尚未加载。因此,您可以使用嵌套的预先加载来加载。
在您的雄辩查询中,您可以使用:
$users = User::with('user_data.employment', 'languages')->where('discipline', $sport)->get();
请注意,employment
的点语法是user_data
的关系,现在可以通过以下方式加载和访问:$user->user_data->employment
参考:https://laravel.com/docs/5.5/eloquent-relationships#nested-eager-loading