在 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' 函数的查询结果进行或逻辑运算,从而实现多个标签的条件查询。

ThinkPHP5 使用 FIND_IN_SET 进行条件查询

原文地址: https://www.cveoy.top/t/topic/oeMn 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录