使用子表记录的Laravel雄辩关系搜索
问题: 我只想要关系记录[使用子表记录的Laravel雄辩关系搜索,laravel,laravel-5,laravel-eloquent,Laravel,Laravel 5,Laravel Eloquent,问题: 我只想要关系记录[user]不为空的记录 就我而言,我只想要第一张唱片。其中,用户不为空 结果: 用户表 身份证 名字 电子邮件 项目选项卡 身份证 头衔 用户id[外键] 我的代码是这样的 $projects = App\Project::with(['user' => function ($user) { $user->where('name', '=', 'Ketan'); }])
user
]不为空的记录
就我而言,我只想要第一张唱片。其中,用户
不为空
结果:
用户表
- 身份证
- 名字
- 电子邮件
- 身份证
- 头衔
- 用户id
[外键]
$projects = App\Project::with(['user' => function ($user) {
$user->where('name', '=', 'Ketan');
}])
->get();
foreach ($projects as $project) {
echo $project->title.' - '.$project;
}
我的结果是这样的:
您可以尝试:
$projects = App\Project::with(['user' => function ($user) {
$user->where('name', '=', 'Ketan');
}])
->get();
foreach ($projects as $project) {
if($project->user != null){
echo $project->title.' - '.$project;
}
}
我得到了我问题的答案
$projects = App\Project::whereHas(['user' => function ($user) { <--Change Here
$user->where('name', '=', 'Ketan');
}])
->get();
$projects=App\Project::whereHas(['user'=>函数($user){where('name','=','Ketan');
}])
->get();
仅使用“where has”将“where has”更改为“where has”
通过这个解决方案,我只得到了那些用户(关系记录)不为空的项目记录。下面的代码正在工作
$projects = App\Project::whereHas('user', function ($user) {
$user->where('name', '=', 'Ketan');
}])->get();
将“with”改为“whereHas”,注意whereHas不接受数组作为参数
作为参考您是否只需要获取一个项目(任何项目),其中用户不为
null
?是,@AlexeyMezenin。我想在任何项目中的用户不是空的。每当我对结果应用这个条件时。我在第一页找到了6个结果,在第二页找到了5个结果,在第三页找到了8个结果,依此类推。。。。。所以,我想对查询而不是结果应用这个条件。这不是一个好的解决方案。它将从数据库中加载每个项目,然后让您循环并仅与用户一起打印这些项目。