Laravel多个加入问题

时间:2017-08-30 09:21:45

标签: mysql laravel

我遇到了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上。

提前致谢。

1 个答案:

答案 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();