Yii2实现同时搜索多个字段的方法
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
编程语言
- Yii2实现同时搜索多个字段的方法
- js以分隔符分隔数组中的元素并转换为字符串的方
- sql server启动不了, MSSQL 18052错误- 9003,严重度
- sqlserver 中时间为空的处理小结
- jquery实现简单文字提示效果
- JS-一个匹配日期的正则
- JS动态给对象添加属性和值的实现方法
- asp.net动态加载自定义控件的方法
- JQuery 在表单提交之前修改 提交的值 -font color=r
- vue-cli3跨域配置的简单方法
- jQuery表单插件ajaxForm实例详解
- php把字符串指定字符分割成数组的方法
- vue中的面包屑导航组件实例代码
- repeater隔行换色与鼠标停留在上面达到变色效果
- SQL Server 比较日期大小的方法
- LotusPhp笔记之-基于ObjectUtil组件的使用分析