我遇到了Laravel表加入的问题。当以下代码运行时,它显示结果:
$result = DB::table('users');
$result->join('role_user', function ($join) {
$join->on('role_user.role_id', '=', 'users.id')
->where('role_user.role_id', $roleId);
});
$result->join('roles', function ($join){
$join->on('role_user.role_id', '=', 'roles.id');
});
$result->select('users.*','role_user.role_id','roles.display_name','roles.description');
$result->get();
但是当我将代码分解为以下内容时:
{{1}}
似乎'roles'表与'user'表连接,但它需要与'role_user'表一起加入,因为它在第一个Query上。
提前致谢。
答案 0 :(得分:0)
您正在尝试访问闭包/匿名函数中的变量$ roleId。因此,您需要将此变量传递给闭包。这应该导致相同的结果。
$result = DB::table('users')
->join('role_user', function ($join) use ($roleId) {
$join->on('role_user.role_id', '=', 'users.id')
->where('role_user.role_id', $roleId)
})
->join('roles', function ($join){
$join->on('role_user.role_id', '=', 'roles.id');
})
->select('users.*','role_user.role_id','roles.display_name','roles.description')
->get();