简体   繁体   English

Laravel Eloquent 模型查询

[英]Laravel Eloquent model query

I Want To Achieve the right query in laravel if anyone can help如果有人可以提供帮助,我想在 laravel 中实现正确的查询

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.您必须在“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%");
});

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM