我有4张桌子。冠军,用户,角色和users_roles。
一名用户作为评委属于冠军。但是我只需要选择具有“法官”角色的用户。
为此,我在冠军表中创建了一个新列,称为“ main_judge”,并创建了新关系
class Championship extends Model
{
...
public function mainJudge()
{
return $this->hasOne('App\User', 'id', 'main_judge');
}
...
}
然后我添加查询一些代码
$query->join('users_roles', 'users.id', '=', 'users_roles.user_id')
->join('roles', 'users_roles.role_id', '=', 'roles.id')
->where('roles.alias', '=', 'judge');
当我将查询打印为sql时(请参见屏幕)
然后在$ query-> get()而不是用户ID之后,我得到了一个角色ID(请参见屏幕)
答案 0 :(得分:0)
我建议使用雄辩的方法,而不要使用查询生成器,因为它将消除手动定义任何联接的需要。
您应该可以执行以下操作:
$championship = Championship::find($id);
$judge = $championship->mainJudge;
如果然后dd($judge)
,您应该以适当的User
对象结束。