在使用yii2构建搜索视图,经常都会使用到gridview这个组件,这个组件十分强大,通过一定的配置就能进行关联搜索,下面就是简单的步骤

  需求场景:一个车系表,里面存放在品牌表的id,现在要用品牌名字进行like搜索对应的车系

  1、用gii生成一个与Model对应的Search;

  2、在Search中,增加一个属性,名为$brand_name;

class SeriesSearch extends Series
{ public $brand_name; // 品牌名字,随便起名

  3、在Search中search中,添加这两句代码;

public function search($params)
{
$query = Series::find(); $query->joinWith(['brand']); // 连接品牌表,此处不用写全名 $dataProvider = new ActiveDataProvider([
'query' => $query,
'sort'=>[
'defaultOrder' => ['id'=>SORT_DESC]
]
]); if (!($this->load($params) && $this->validate())) {
return $dataProvider;
} $query->andFilterWhere([
'id' => $this->id,
'brand_id' => $this->brand_id,
'level_id' => $this->level_id,
'type_id' => $this->type_id,
'is_hot' => $this->is_hot,
'auto_series_id' => $this->auto_series_id,
'status' => $this->status,
'sort' => $this->sort,
'min_price' => $this->min_price,
'max_price' => $this->max_price,
'car_total' => $this->car_total,
'create_time' => $this->create_time,
'update_time' => $this->update_time,
]); $query->andFilterWhere(['like', 'name', $this->name])
->andFilterWhere(['like', 'letter', $this->letter])
->andFilterWhere(['like', 'comments', $this->comments])
->andFilterWhere(['like', 't_brand.name', $this->brand_name]); // 此处必须写表全名,而$this->brand_name指向的属性正是第二步中新增的属性 return $dataProvider;
}

  4、此时,再来看看视图文件;

[
'label' => '品牌',
'attribute' => 'brand_name', // 此处是第二步新增的属性名字
'value' => 'brand.name', // 不用写表全名
],

  5、到此,就大功告成了!

关于yii2的gridview关联搜索步骤的更多相关文章

  1. WPF Toolkit AutoCompleteBox 实体类绑定 关键字自定义关联搜索匹配

    原文:WPF Toolkit AutoCompleteBox 实体类绑定 关键字自定义关联搜索匹配 WPF Toolkit AutoCompleteBox 实体类绑定 关键字自定义关联搜索匹配 网上的 ...

  2. yii2 ActiveRecord多表关联以及多表关联搜索的实现

    作者:白狼 出处:http://www.manks.top/yii2_many_ar_relation_search.html 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明 ...

  3. yii2之GridView小部件

    GridView小部件用于展示多条数据的列表.GridView小部件的使用需要数据提供器即yii\data\ActiveDataProvider的实例作为参数,所以 第一步就是要在控制器方法中创建这个 ...

  4. Yii2的Gridview应用技巧补充

    Yii2框架下的Gridview通常用来展示一张DB表中的数据,十分方便.这里只说一下经常要用到的一些小技巧,其实大多数官方文档都是有的,只是有可能需要在多个文档里. 自动创建的gridview示例. ...

  5. Yii2框架GridView自带导出功能最佳实践

    1. 导出excel的实现方法 (1)使用phpexcel封装工具类导出excel (2)使用爬虫爬取页面再处理封装工具类导出excel (3)使用页面渲染后处理html添加头部信息生成excel文件 ...

  6. Yii2中GridView

    Yii2 GridView与dropdownList结合的用法 http://www.yiichina.com/tutorial/473 <?=$form->field($model, ' ...

  7. Yii2.0 GridView 新增添加按钮

    <?= GridView::widget([ 'dataProvider' => $dataProvider, 'filterModel' => $searchModel, 'col ...

  8. yii2的GridView和ActiveDataProvider具体使用

    1.控制器中(以User模块的列表为例): 第一步: use backend\models\User;use yii\data\ActiveDataProvider; 第二步: public func ...

  9. DevExpress GridView 自定义搜索按钮改为中文内容

    首先将 GridControl 控件的搜索功能显示出来. http://www.cnblogs.com/DeepLearing/p/3887601.html 显示效果如下: 可以通过 GridLoca ...

随机推荐

  1. OC——封装(初级与高级)

    所谓的封装,就是通过定义方法或者函数去操作成员属性或者成员变量,而不是直接通过指针方式去操作.借此达到提高代码安全性,代码可行性以及代码执行效率的目的. 1:初级封装,对成员变量进行封装. #impo ...

  2. pythonj基础之 多线程

    多线程类似于同时执行多个不同程序,多线程运行有如下优点: 使用线程可以把占据长时间的程序中的任务放到后台去处理. 用户界面可以更加吸引人,这样比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进 ...

  3. zoj1074 To the Max

    题目很简单,求一个连续的最大子矩阵的值. zoj上的数据非常弱. 首先爆搜是O(N^4),10^8的复杂度略高,那么我们可以处理一下其中一维的前缀和,降一阶,然后按照连续最大子序列来处理,因为可能为负 ...

  4. your local changes would be overwritten by merge. commit stash or revert them to proceed. view them

    error log: your local changes would be overwritten by merge. commit stash or revert them to proceed. ...

  5. Android设置全屏

    全屏显示 getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLA ...

  6. tornado web框架

    tornado web框架 tornado简介 1.tornado概述 Tornado就是我们在 FriendFeed 的 Web 服务器及其常用工具的开源版本.Tornado 和现在的主流 Web ...

  7. Oracle EBS-SQL (INV-2):检查帐户别名发放记录.sql

    SELECT FU.description                 操作者,         ITM.SEGMENT1               物料编码,         ITM.DESC ...

  8. 5路数字量输入Di,5路大电流继电器输出,可电脑控制,支持modbus协议工业模块,支持和DCS,PLC无缝对接。

    数字量输入输出模块MRD-5060具有5路DI,5路继电器输出,1路485接口(支持Modbus RTU),能实现5路DI(干接点输入)转485的采集,也可以通过485控制5路继电器(5A30VDC, ...

  9. 使用Mindjet MindManager 制作流程图案例

    心得体会是: 导出为swf格式的流程图最为美观 有些过于复杂的对象在swf viewer中是无法显示的(比如各种表格,任务,提醒,自定义属性). 所有主题和子主题在viewer刚打开的时候一定都是全部 ...

  10. Linux下查找最大文件

    当我们应用一段时间以后,Linux可能会变得臃肿了,那么,怎么找出一个“path”下的最大文件呢? 可以使用du命令,如: du -sh [dirname|filename] 如:当前目录的大小: d ...