I Want To Achieve the right query in laravel if anyone can help
I have This query
SELECT * FROM `users` WHERE ((`is_verified` = 1) AND (`first_name` like '%%' or `middle_name` like '%%' or `last_name` like '%%' or `email` like '%%'))
and i have this in my code
$user->where([
['is_verified', '=', 1]
])
->where('first_name', 'like', "%$search%")
->orWhere('middle_name', 'like', "%$search%")
->orWhere('last_name', 'like', "%$search%")
->orWhere('email', 'like', "%$search%");
but it produces
SELECT * FROM `users` WHERE ((`is_verified` = '1') and `first_name` like '%%' or `middle_name` like '%%' or `last_name` like '%%' or `email` like '%%')
You have to use an anonymous function in a "closure-where" clause.
$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%");
});
you must use anonymous function like following code:
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();
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.