首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel Eloquent模型查询

Laravel Eloquent模型查询
EN

Stack Overflow用户
提问于 2020-02-04 04:09:30
回答 2查看 54关注 0票数 0

我想用laravel实现正确的查询,如果有人能提供帮助的话

我有这个问题

代码语言:javascript
复制
SELECT * FROM `users` WHERE ((`is_verified` = 1) AND (`first_name` like '%%' or `middle_name` like '%%' or `last_name` like '%%' or `email` like '%%'))

在我的代码中有这样的代码

代码语言:javascript
复制
$user->where([
                ['is_verified', '=', 1]
            ])
                ->where('first_name', 'like', "%$search%")
                ->orWhere('middle_name', 'like', "%$search%")
                ->orWhere('last_name', 'like', "%$search%")
                ->orWhere('email', 'like', "%$search%");

但它会产生

代码语言:javascript
复制
SELECT * FROM `users` WHERE ((`is_verified` = '1') and `first_name` like '%%' or `middle_name` like '%%' or `last_name` like '%%' or `email` like '%%') 
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-02-04 04:24:29

你必须在"closure-where“子句中使用匿名函数。

代码语言:javascript
复制
$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%");
});
票数 2
EN

Stack Overflow用户

发布于 2020-02-04 04:39:06

你必须像下面的代码一样使用匿名函数:

代码语言:javascript
复制
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();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60046452

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档