雷达智富

首页 > 内容 > 程序笔记 > 正文

程序笔记

TP6.0 搜索器使用示例

2024-09-12 13

1. 构建搜索器参数2. 根据时间范围筛选3. 根据 nickname 字段模糊查询4. hasWhere 根据关联条件来查询当前模型对象数据

1. 构建搜索器参数


/** * 模型搜索器参数构造函数 * * @param array $keys * @param array $where */function where_filter(&$keys, array $where){    // 去掉数组里的空字符串和null    $where = array_filter($where, function ($k) {        return ($k === '' || $k === null) ? false : true;    });    // 拿到所有键    $keys = array_keys($where);    // 返回数组    return $where;}

2. 根据时间范围筛选


/** * 追加获取器 *  * create_time_range 根据时间范围筛选 */public function searchCreateTimeRangeAttr($query, $value){    $query->whereBetweenTime('create_time', ...explode(' - ', $value));}

3. 根据 nickname 字段模糊查询


/** * 根据nickname字段模糊查询 *  * @param  [type] $query [description] * @param  [type] $value [description] * @param  [type] $data  [description] */public function searchNicknameAttr($query, $value, $data){    $value !== '' && $query->whereLike('nickname', '%' . $value . '%');}

4. hasWhere 根据关联条件来查询当前模型对象数据


商家表

mysql> select * from merch;+----+---------+-----------------+| id | user_id | name            |+----+---------+-----------------+|  1 |       1 | 昊天宗          ||  2 |       2 | 七宝琉璃宗      |2 rows in set (0.00 sec)

用户表

mysql> select * from user;+----+--------+-------+| id | name   | score |+----+--------+-------+|  1 | 张三   |    30 ||  2 | 李四   |    20 ||  3 | 王五   |    50 |+----+--------+-------+3 rows in set (0.02 sec)

应用场景: 在商家列表中根据用户昵称查询商家

public function searchNameAttr($query, $value, $data){    $query->hasWhere('user', function ($query) use ($value) {        $query->whereLike('name', '%' . $value . '%');    });}
更新于:6天前
赞一波!

文章评论

全部评论