加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – Eloquent分组或者在哪里

发布时间:2020-12-13 15:59:33 所属栏目:PHP教程 来源:网络整理
导读:目前有一个Eloquent声明: $contacts = Contacts::where('lname','LIKE',$searchquery.'%') -orWhere('fname',$searchquery.'%') -orWhere('phone','%'.$searchquery) -where('active','=',1)-get(); 它把它视为 select * from contacts where lname like $s
目前有一个Eloquent声明:

$contacts = Contacts::where('lname','LIKE',$searchquery.'%')
    ->orWhere('fname',$searchquery.'%')
    ->orWhere('phone','%'.$searchquery)
    ->where('active','=',1)->get();

它把它视为

select 
    * 
from 
    contacts 
where 
    lname like $searchquery+'%' 
    or lname like $searchquery+'%' 
    or lname like $searchquery+'%' 
    and active = 1

我需要的是

select 
    * 
from 
    contacts 
where 
    (lname like $searchquery+'%' 
    or lname like $searchquery+'%' 
    or lname like $searchquery+'%') 
    and active = 1

我如何在Eloquent中进行分组?我找到了几个例子,例如:

DB::table('users')
        ->where('name','John')
        ->orWhere(function ($query) {
            $query->where('votes','>',100)
                  ->where('title','<>','Admin');
        })
        ->get();

但我只习惯Eloquent,而不是Laravels DB Query构建器.我尝试将Eloquent表单改编成这个

$contacts = Contacts::->where('active','1')
        ->where(function ($query) {
            $query->orWhere('lname',$searchquery.'%')
                  ->orWhere('lname',$searchquery.'%')
                  ->orWhere('phone','%'.$searchquery);
        })
        ->get();

没有成功,因为它无法识别函数内的$searchquery.

我错过了什么?

解决方法

所以,这就是你要做的:

DB::table('users')->where(function($query) use ($searchQuery){
                                $query->where('lname',$searchQuery . '%')
                                      ->orWhere('fname',$searchQuery . '%')
                                      ->orWhere('phone','%' . $searchquery);
                          })
                          ->get();

请注意,我已经使用了($searchQuery),因此可以在闭包内使用它

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读