左连接不正常

时间:2014-12-31 03:53:49

标签: php laravel laravel-4

我正在尝试使用laravel使用以下查询搜索为特定课程注册的所有用户。

$users = DB::table('users')
            ->leftJoin('registrationrequests', 'users.id', '=', 'registrationrequests.user_id')
            ->where('firstname', 'LIKE', "%$search%")
            ->orWhere('lastname', 'LIKE', "%$search%")
            ->orWhere('username', 'LIKE', "%$search%")
            ->where('registrationrequests.course_id', $course_id)
            ->where('registrationrequests.registered', 1)
            ->get();

在表格registrationrequests中,我有course_iduser_idregistered(二进制值)的列。 course_iduser_id是各个表的外键。

我正在获得一组输出。但它没有检查条件where('registrationrequests.course_id', $course_id)

可能是什么原因?

1 个答案:

答案 0 :(得分:1)

使用http://laravel.com/docs/4.2/queries#advanced-whereshttps://stackoverflow.com/a/18660266/689579您的查询看起来像 -

$users = DB::table('users')
        ->leftJoin('registrationrequests', 'users.id', '=', 'registrationrequests.user_id')
        ->where('registrationrequests.course_id', $course_id)
        ->where('registrationrequests.registered', 1)
        ->where(function($users) use($search){ 
                $users->where('firstname', 'LIKE', "%$search%")
                      ->orWhere('lastname', 'LIKE', "%$search%")
                      ->orWhere('username', 'LIKE', "%$search%")
        })
        ->get();