管理员
站长QQ:515138
- 主题
- 124
- 回帖
- 7
- 在线时间
- 76 小时
- 注册时间
- 2024-2-3
- 最后登录
- 2024-11-14
|
thinkphp8.0.x where查询字段中是否包含某个值,thinkphp8 数组作为条件,查询字段中是否包含某个值
比如查询购物车 cart表 中 good_ids 字段中是否存在想要查询的商品good_id ;
例如: good_ids 有 1,2,3,22,334 商品id, 想查询 3是否在该字段里面
对于一些实在复杂的查询,比如find_in_set,也可以直接使用原生SQL语句进行查询,例如:
- Db::table('think_user')
- ->where('find_in_set(1,sids)')
- ->select();
复制代码
为了安全起见,我们可以对字符串查询条件使用参数绑定,例如:
- Db::table('think_user')
- ->where('find_in_set(:id,sids)',['id'=>$id])
- ->select();
复制代码 其他解决方案:
在thinkphp5中使用mysql find_in_set语法时,可以使用EXP(表达式查询)来实现,具体代码如下:
- $data = Db::table('students')->where('exp','FIND_IN_SET(1,sids)')->select();
复制代码 如果用数组条件查询形式的话,那么像下面这么写查询条件即可:
- $where[]=['exp','FIND_IN_SET(2,sids)'];
复制代码 当然也有朋友说建议用like,like是广泛的模糊匹配,字符串中没有分隔符,Find_IN_SET 是精确匹配,字段值以英文","分隔,Find_IN_SET查询的结果要小于like查询的结果。
|
|