在实践中发现,如果直接用 whereOr 进行联动查询,会使得全盘查询,查询出的数据不是我们想要的,查询后sql 语句结构如下:
SELECT * FROM `think_user` WHERE `name` LIKE '%thinkphp%' OR `name` LIKE '%kancloud%' LIMIT 1
但是上面的并不是我们想要的,我们想要的是条件后面括号括起来的条件,如下SQL:
SELECT * FROM `think_user` WHERE ( `name` LIKE '%thinkphp%' OR `name` LIKE '%kancloud%' ) AND ( `id` > 0 AND `id` <> 10 ) LIMIT 1
tp5框架中提供了一个方法,其位置在文档里:数据库-查询构造器-高级查询 ,这里给我们提供了不同的查询方式,根据业务选择我们需要的方法,而实现上述方法的结构如下图所示: