如何在 Laravel 中准备以下 MySQL 查询?
这是我使用但没有成功的代码:
$user_list = DB::table('users')
->where('users.user_id' ,'=', $clientId)
->where('users.firstname', 'LIKE', '%'.$_POST['name'].'%')
->orWhere('users.lastname', 'LIKE', '%'.$_POST['name'].'%')
->orWhere('users.email', 'LIKE', '%'.$_POST['name'].'%')
->join('users_roles', 'users.id', '=', 'users_roles.user_id')
->where('users_roles.role_id', '=', Role::USER_PARTICIPANT)
->get();
条件必须是:
-
users.user_id == $clientId
-
users.firstname == '%'.$_POST['name'].'%' OR users.lastname == '%'.$_POST['name'].'%' OR users.email == '%'.$_POST['name'].'%'
- users_roles 和穿越
users.id == users_roles.user_id when users_roles.role_id == Role::USER_PARTICIPANT
的用户之间的内部连接
最佳答案
好吧,看来你的问题出在 嵌套 where
试试这个:
$name = $_POST['name']; // I'd recommend you use Input::get('name') instead...
$user_list = DB::table('users')
->where('users.user_id' ,'=', $clientId)
->where(function($query) use ($name){
$query->where('users.firstname', 'LIKE', '%'.$name.'%');
$query->orWhere('users.lastname', 'LIKE', '%'.$name.'%');
$query->orWhere('users.email', 'LIKE', '%'.$name.'%');
})
->join('users_roles', 'users.id', '=', 'users_roles.user_id')
->where('users_roles.role_id', '=', Role::USER_PARTICIPANT)
->get();
关于php - 具有多个 where orwhere 和内部连接的 laravel mysql 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27063077/