ThinkPHP6,where和whereLike同时用踩坑记录
ThinkPHP6,where和whereLike同时用踩坑记录。。。
// 以下示例共用条件 $where_or=[]; $where_or_i=[]; $where_or_i[]='普通,%'; $where_or_i[]='%,普通,%'; $where_or_i[]='%,普通'; $where_or_i[]='普通'; $where_or[]=$where_or_i;
方案1,所有条件写到一个数组里 -- 可行
// 示例: $where[]=['id','>',0]; $cond_t=['flag','like',$where_or,'OR']; $where[]=$cond_t; $list=(new User)->where($where)->column('id');
方案2,whereLike改用where,like写到里面,实质应该和1一样 -- 可行
// 示例: $list=(new User)->where('id','>',0)->where('flag','like',$where_or,'OR')->column('id');
方案3,where和whereLike同时用 -- 不可行
// 示例: $list=(new User)->where('id','>',0)->whereLike('flag',$where_or,'OR')->column('id');
同时用,会导致where条件和whereLike的条件连接词是 or ( 实际想要的连接词是 and ),即生成的sql语句为
SELECT `id` FROM `user` WHERE ( `id` > 0 OR (`flag` LIKE '普通' OR `flag` LIKE '%,普通' OR `flag` LIKE '普通,%' OR `flag` LIKE '%,普通,%') )
**若需要的就是方案3这样的,可以不必理会。