Yii2实现同时搜索多个字段的方法

网络编程 2025-03-13 23:04www.168986.cn编程入门

Yii2框架下的多字段搜索实践

在Yii2中,当您想要搜索多个字段时,例如文章标题和文章内容,如何确保搜索关键词在这些字段中都有出现?这就需要使用到`andFilterWhere`和`orFilterWhere`这两个方法。

```php

public function actionIndex()

{

// 获取用户提交的搜索关键词

$key = Yii::$app->request->post("key");

// 构建查询,关联文章和分类表

$query = Post::find()->joinWith('cate');

// 设置查询条件,按文章状态过滤并降序排列ID

$post = $query->orderBy(['post.id' => SORT_DESC])->asArray()->where(['post.status' => 1]);

// 如果存在搜索关键词

if ($key) {

// 构建多字段搜索条件:标题包含关键词 或 内容包含关键词

$post->andFilterWhere(['like', 'post.title', $key])

->orFilterWhere(['like', 'post.content', $key]);

}

// 设置分页参数

$pages = new Pagination([

'totalCount' => $post->count(), // 总记录数

'defaultPageSize' => 10 // 默认每页显示数量

]);

// 执行查询并获取数据

$model = $post->offset($pages->offset)->limit($pages->limit)->all();

// 返回渲染结果,传递数据和分页信息到视图层

return $this->render('index', [

'model' => $model, // 数据列表

'pages' => $pages, // 分页信息

]);

}

``` 接下来是SQL查询语句的解释:

```sql

Copyright © 2016-2025 www.168986.cn 狼蚁网络 版权所有 Power by