$where['a'] = '1';
$where['b'] = '2';
$where['c'] = '3';
$whereOr['a'] = '1';
$whereOr['b'] = '2';
$whereOr['c'] = '3';
$data = Db::name('matorder')->where($where)->whereOr($whereOr)->select();
这样查出来的结果不是我想要的,SQL语句为
SELECT * FROM `table` WHERE `a` = '1' AND `b` = '2' AND `c` = '3' OR `a` = '1' OR `b` = '2' OR `c` = '3';
我想要的是这样的一个查询语句:
SELECT * FROM `table` WHERE ( `a` = '1' AND `b` = '2' AND `c` = '3' ) OR ( `a` = 1 AND `b` = '2' AND `c` = '3' );
后来看手册,发现可以通过混合查询达到效果,下面是手册图:
因为自己之前用的闭包不多,所以不怎么了解闭包传参,还好后面查到了
$data = Db::name('table')->where(function ($query) use ($where) {
$query->where($where);
})->whereOr(function ($query) use ($whereO) {
$query->where($whereO);
})->select();
这就是想要的结果了,此文仅为记录防止忘记