现在是少女时代,以后是少女时代,永远是少女时代!
sone :少时的假粉丝

thinkphp5中find_in_set的使用方法



tp5中find_in_set的使用方法,find_in_set() 是 mysql 数据库常用的一个函数,用来查询字段逗号分割的数据包含,看到一篇文章写的还可以记录存档一下。


解决方案:

对于一些实在复杂的查询,比如find_in_set,也可以直接使用原生SQL语句进行查询,例如:

Db::table('think_user')
    ->where('find_in_set(1,sids)')
    ->select();

& 说明find_in_set 用法 注:

sids 表示的是某某字段 如 职位字段
然后 1 表示 这个职位的 id
如 王大仙 担任 开发(id = 1)兼任 编辑作者 (id = 2),和跑腿岗位(id = 3)
那么王大仙这个用户记录 sids 字段的值为 1,2,3、
因为要查询 岗位为开发的 即 id = 1 ,sids包含 1开发的职位

所以sql  where 条件 就要这样写了 FIND_IN_SET('1',`sids`);
转换成 thinkphp 写法
->where('find_in_set(1,sids)')

为了安全起见,我们可以对字符串查询条件使用参数绑定,例如:

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)'];

转载自 :tp5中用find_in_set thinkphp5中find_in_set的使用方法

我是代码的搬运工 ->_<-

琼ICP备16001221号-1