我想从两个表概要文件中获取数据,并且用户将它们与一对一关联。我要从两个表中获取数据,但是现在我想在用户表中添加该列的条件。 该代码可以很好地获取数据。
$clients = Profile::all();
return view('admin.clients', compact('clients'));
但是我想要这样的东西。
'select profile.*, user.* from profile, user where profile.user_id=users.id and users.role_id=3';
如何将该查询转换为上述查询的形状。
答案 0 :(得分:1)
您可以在查询关系或关系本身中添加一个位置。
让我们说您有用户关系,您可以这样做
Profile::with(['users' => function($users) {
$users->where('role_id','=',3);
}])->get();
这将为您提供所有配置文件,并过滤角色=这些配置文件中的3个用户。
如果要获取具有角色= 3的用户的个人资料,则可以使用whereHas
Profile::with('users')->whereHas('users', function($users) {
$users->where('role_id','=',3);
})
->get();
答案 1 :(得分:0)
如果您要获取具有关系表的数据,并在查询中使用where条件编写此代码,那么100%对我有用。
Profile::join('users', function($join){
$join->on('profiles.user_id', '=', 'users.id')
->where('users.role_id', '=', 3);
})
->get();
使用连接,我可以成功获取用户角色ID等于3的所有配置文件以及其他关系表数据,例如用户表中的电子邮件和服务表中的服务标题,以及配置文件表中的所有数据