如果有人可以帮助,我想在laravel中实现正确的查询
我有此查询
SELECT * FROM `users` WHERE ((`is_verified` = 1) AND (`first_name` like '%%' or `middle_name` like '%%' or `last_name` like '%%' or `email` like '%%'))
我在我的代码中有这个
$user->where([
['is_verified', '=', 1]
])
->where('first_name', 'like', "%$search%")
->orWhere('middle_name', 'like', "%$search%")
->orWhere('last_name', 'like', "%$search%")
->orWhere('email', 'like', "%$search%");
但是会产生
SELECT * FROM `users` WHERE ((`is_verified` = '1') and `first_name` like '%%' or `middle_name` like '%%' or `last_name` like '%%' or `email` like '%%')
答案 0 :(得分:2)
您必须在“ closure-where”子句中使用匿名函数。
$user->where([
['is_verified', '=', 1]
])->where(function ($query) use ($search) {
$query->where('first_name', 'like', "%$search%")
->orWhere('middle_name', 'like', "%$search%")
->orWhere('last_name', 'like', "%$search%")
->orWhere('email', 'like', "%$search%");
});
答案 1 :(得分:0)
您必须使用匿名函数,例如以下代码:
User::where(function ($query){
$query->where('is_verified', 1);
})->where(function ($query) use ($search) {
$query->where('first_name', 'like', "%$search%")
->orWhere('middle_name', 'like', "%$search%")
->orWhere('middle_name', 'like', "%$search%")
->orWhere('email', 'like', "%$search%");
})->toSql();