找回密码
 立即注册
查看: 175|回复: 0

[教程] thinkphp8.0.x where查询字段中是否包含某个值

[复制链接]

30

金豆

170

黑豆

2

精华

管理员

站长QQ:515138

主题
124
回帖
7
在线时间
76 小时
注册时间
2024-2-3
最后登录
2024-11-14
发表于 2024-8-24 11:37:13 | 显示全部楼层 |阅读模式
thinkphp8.0.x where查询字段中是否包含某个值,thinkphp8 数组作为条件,查询字段中是否包含某个值

比如查询购物车 cart表 中 good_ids 字段中是否存在想要查询的商品good_id ;
例如: good_ids 有 1,2,3,22,334 商品id, 想查询 3是否在该字段里面
对于一些实在复杂的查询,比如find_in_set,也可以直接使用原生SQL语句进行查询,例如:
  1. Db::table('think_user')
  2.     ->where('find_in_set(1,sids)')
  3.     ->select();
复制代码

为了安全起见,我们可以对字符串查询条件使用参数绑定,例如:
  1. Db::table('think_user')
  2.     ->where('find_in_set(:id,sids)',['id'=>$id])
  3.     ->select();
复制代码
其他解决方案:
在thinkphp5中使用mysql find_in_set语法时,可以使用EXP(表达式查询)来实现,具体代码如下:
  1. $data = Db::table('students')->where('exp','FIND_IN_SET(1,sids)')->select();
复制代码
如果用数组条件查询形式的话,那么像下面这么写查询条件即可:
  1. $where[]=['exp','FIND_IN_SET(2,sids)'];
复制代码
当然也有朋友说建议用like,like是广泛的模糊匹配,字符串中没有分隔符,Find_IN_SET 是精确匹配,字段值以英文","分隔,Find_IN_SET查询的结果要小于like查询的结果。


QQ|网站地图|Archiver|手机版|金黑 ( 粤ICP备2021124338号 )

网站建设,微信公众号小程序制作,商城系统开发,高端系统定制,app软件开发,智能物联网开发,直播带货系统等

Powered by Www.Jinhei.Cn

Copyright © 2013-2024 深圳市金黑网络技术有限公司 版权所有

快速回复 返回顶部 返回列表