当前位置:首页 > 未分类

ThinkPHP6,where和whereLike同时用踩坑记录

admin2年前 (2024-06-07)未分类12005

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这样的,可以不必理会。

扫描二维码推送至手机访问。

版权声明:本文由服务端开发技术分享发布,如需转载请注明出处。

本文链接:https://www.htmlcms.cn/?id=8

分享给朋友:

相关文章

thinkphp6 多应用模式下,多个应用都需要使用图片验证码时,会共用验证码,让每个应用使用自己的验证码

1. 关闭框架层的中间件中的默认会话初始化;2. 给各个应用的中间件开启(增加)会话初始化;3. 会话初始化需要 开启/关闭 的中间件:\think\middleware\SessionInit::class。…

thinkphp升级后报错Declaration of think\app\Url::build() must be compatible with think\route\Url::build()

1. 出现这个错误的原因是,你通过命令“composer update topthink/framework”只升级了框架,没有更新多应用扩展模块。2. 只需要composer运行下面代码更新多应用扩展模块到最新版后即可…

thinkphp前后端分离,如何使用think-captcha?

  captcha配置文件增加 'api' => true,。。如果是单应用,增加全局的captcha配置文件中,如果是多应用,复制全局captcha配置文件到对应应用的config目录,然后增加或只保留 &…

curl网页采集相关

 Accept-Encoding需要单独设置,不能放在header里,对应curl 的CURLOPT_ENCODING属性。。如果采集到的网页是乱码,可以设置这个为gzip,deflate试试…