laravel when方法如何进行分组

需求
select * from table where a=1 and (b=2 or c=3)

结合实际业务需求($is)及laravel的when方法

$this->where('a',1)
    ->when($is,function($query){
        $query->where('b',2)
              ->orWhere('c',3);
    });

实际产生语句
select * from table where a=1 and b=2 or c=3

没在文档上找到这个问题的解决方案,求解

拉丁的传说
浏览 541回答 5
5回答

HUH函数

先还是用原生的whereRaw()方法凑合着用下了

守候你守候我

把它抱起来就好啦 $this->where('a',1) ->when($is,function($query){ return $query->where(function($query2){ $query2->orWhere('a' => b)->orWhere('c' => 'd'); //$query2->orWhere(['a' => b, 'c' => 'd']); }); }); //select * from table where a = 1 and (a = b or c = d)

素胚勾勒不出你

题主效率有问题. select * from table where a=1 and b=2 unionselect * from table where a=1 and b=3;

精慕HU

$this->where('a',1)->where(function($query) use($is){ if($is) $query->where('b',2)->orWhere('c',3); });
打开App,查看更多内容
随时随地看视频慕课网APP