ThinkPHP5 使用 FIND_IN_SET 进行条件查询
在 ThinkPHP5 中,可以使用 'where' 方法结合 'exp' 方法来实现 'FIND_IN_SET' 函数的条件查询。
例如,要查询 'users' 表中 'tags' 字段中包含 'php' 的记录,可以按照以下方式编写代码:
$users = Db::name('users')
->where(function ($query) {
$query->exp('FIND_IN_SET('php', tags)');
})
->select();
其中,'exp' 方法用于将字符串作为 SQL 表达式直接拼接到 SQL 语句中,从而实现 'FIND_IN_SET' 函数的调用。'where' 方法接受一个匿名函数作为参数,该函数中包含了 'exp' 方法的调用,用于构建条件查询。
如果要查询包含多个标签的记录,可以按照以下方式编写代码:
$tags = ['php', 'mysql'];
$users = Db::name('users')
->where(function ($query) use ($tags) {
foreach ($tags as $tag) {
$query->exp('FIND_IN_SET('' . $tag . '', tags)');
if ($tag !== end($tags)) {
$query->whereOr();
}
}
})
->select();
其中,用到了 'foreach' 循环遍历标签数组,并使用 'whereOr' 方法将多个 'FIND_IN_SET' 函数的查询结果进行或逻辑运算,从而实现多个标签的条件查询。
原文地址: https://www.cveoy.top/t/topic/oeMn 著作权归作者所有。请勿转载和采集!