当前位置:首页 > 未分类 > 正文内容

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

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

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

分享给朋友:

相关文章

ThinkPHP整合PHPMailer实现QQ邮件发送

邮件发送功能在项目中还是非常常用的,比如用户注册发送验证码,用户发送留言邮件,事件提醒功能等。今天我们就用thinkphp整合PHPMailer扩展来实现邮件发送功能。1、QQ邮箱设置    &nbs...

PHP如何判断访问来源是微信小程序、公众号平台、APP

    //判断是什么平台     function platform()     {  &n...

ThinkPHP 使用withJoin时,field无效的解决办法

ThinkPHP 使用withJoin时,field无效的解决办法:一、 filed 改为使用 visible.    1. 需注意,visible里需要传的是数组,且主表的字段不需要加别名(wher...

PHP去除数组中的 0

1. 使用array_filter()函数$array = [1, 0, 2, 0, 3, 0]; $array = array_filter($a...

MySQL 3个字段作为一个字段输出

在MySQL中,如果你想将3个字段合并成一个字段输出,可以使用CONCAT()函数或者CONCAT_WS()函数。这两个函数都可以用来连接字符串,但CONCAT_WS()允许你指定一个分隔符。1. 使用CONCAT() CONCAT()函数...

git报错: fatal: bad object HEAD

一般问题原因:.git内文件有问题,比如误删除了一些文件(我就是因为.git\objects\pack文件夹过大,删除了这个文件夹)。处理建议: 在其他盘符或文件夹把项目拉下来,然后复制.git文件夹到要操作的文件夹覆盖,然后继续...