PHP开发PHP经验分享

TP5 实现多字段的关键词模糊查询

2020-04-22  本文已影响0人  华仔233

我们在开发中会遇到关键词查询,但是查询的关键词又是多个字段的。

我们要考虑到的是这几个字段LIKE查询的时候,他们的关系是或关系,最外层则是和关系

1、实现思想

类型 =1 AND (用户名 LIKE %关键词% OR 用户公司名称 LIKE %关键词% OR 用户标签 LIKE %关键词%)

2、TP5如何实现

2.1、第一种实现方法
$keyword = input('keyword') ?? '';
$user = (new UserModel)->where('type', 1)
    ->where(function ($query) use ($keyword) {
        if ($keyword == '') {
            $query->whereOr('username', 'like', '%' . $keyword . '%')
                ->whereOr('company_name', 'like', '%' . $keyword . '%')
                ->whereOr('labels', 'like', '%' . $keyword . '%');
        }
    })->select();

其中子条件中的第一个条件用wherewhereOr效果都是一样的,但后面两个必须用whereOr

2.2、第二种实现方法
$keyword = input('keyword') ?? '';
$user = (new UserModel)->where('type', 1)
    ->where(function ($query) use ($keyword) {
        if ($keyword == '') {
            $query->where("concat(username,company_name,labels) LIKE '%$keyword%' ");
        }
    })->select();

下面这种用了数据库方法的concat,目的是将要查询的字段拼接在一起与关键词匹配,也就是或查询

上一篇下一篇

猜你喜欢

热点阅读