对于一些实在复杂的查询,比如FIND_IN_SET也可以直接使用原生SQL语句进行查询,例如:
1 2 3 | Db::table( 'think_user' ) ->where( 'find_in_set(1,sids)' ) ->select(); |
为了安全起见,我们可以对字符串查询条件使用参数绑定,例如:
1 2 3 | Db::table( 'think_user' ) ->where( 'find_in_set(:id,sids)' ,[ 'id' => $id ]) ->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)' ]; |