thinkphp6根据id查询指定字段逗号分隔的字符串是否包含该id
ThinkPHP
2023-01-04 22:41:28
问题描述:现有权限表、角色表、用户表三张基础表,根据表组合成常规的权限管理操作。需要根据给出的权限id查询出角色表字段为node_ids数据中是否有该权限id,node_ids字段数据为权限id逗号分隔的字符串数据。
角色表数据如图:
查询结果需求:查找出包含1的所有node_ids字段数据。
从截图中可以得出只有第一条和第二条数据包含了id为1的数据,那么在thinkphp6中如何使用mysql来取出这两条数据呢?
熟悉mysql的应该会想到FIND_IN_SET()
定义:FIND_IN_SET(str,strlist) : str 要查询的字符串,strlist 需查询的字段,参数以”,”分隔,形式如 (1,2,6,8,10,22);该函数的作用是查询字段(strlist)中是否包含(str)的结果,返回结果为null或记录。
从定义中我们可以得到,通过该函数可以获取到我们需要的数据。
那么在thinkphp6中可以如何使用该函数呢?
在thinkphp6手册中我们可以查询到whereFindInSet快捷查询方法,通过定义可知该方法即FIND_IN_SET。
如此,我们就可以通过thinkphp6提供的查询方法来实现该功能,代码如下:
$list = Db::name('role') ->whereFindInSet('node_ids',1) ->select();
代码释义:查询表名为role,其中node_ids字段字符串数据中包含1的所有数据。
六月初字帖坊小程序
你想要的字帖模板及工具,这里都有!
877篇文章
3021人已阅读