在使用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. adb server didn t ack failed to start daemon

    关掉Ecilpse,打开cmd命令行 1)cd到sdk的platform-tools目录下, 2)执行  adb kill-server  ,出现  server not runing 提示 3)执行 ...

  2. Java内部类总结

    内部类是一种编译器现象,与虚拟机无关.编译器将会把内部类翻译成用美元符号$分隔外部类名与内部类名的常规类文件,而虚拟机对此一无所知.编译器为了引用外部类,生成了一个附加的实例域this$0 为什么要用 ...

  3. linux 删除和安装java

    一.jdk1.4卸载 由于redhat Enterprise 5 中自带安装了jdk1.4的,所以在安装jdk1.6前我把jdk1.4的卸了,步骤如下:   1.打开终端输入#rpm -qa | gr ...

  4. DRBD脑裂解决方法

    1.查看主服务器 [root@master ~]# /etc/init.d/drbd status drbd driver loaded OK; device status: version: (ap ...

  5. ajax读取txt文件

    注意url为网络路径 <html><head><script type="text/javascript">  function loadXML ...

  6. 数组转DataTable

    using System; using System.Data; namespace ArrayToDataTable { class ArrayToDataTable { /// <summa ...

  7. Javascript 拖拽雏形中的一些问题——逐行分析代码,让你轻松了解拖拽的原理

    今天我们就来解决上一次拖拽雏形中的一些问题.下面看看有哪些问题? 附上上期的Javascript代码,方便大家查看问题. <script type="text/javascript&q ...

  8. Generator & yield write in sync way

    Generator & yield write in sync way var p = new Promise(function(resolve, reject){ setTimeout(fu ...

  9. Balsamiq Mockups registration code

    最近使用Mockups 进行页面原型设计,发现是未注册的,于是网上查询了下注册码,居然有效,在此记录下.    有需要的朋友也可以试试. Name:Rick Dong     Key:eNrzzU/O ...

  10. 解决 MySQL manager or server PID file could not be found! 的方法

    [root@centos var]# service mysqld stop MySQL manager or server PID file could not be found!       [F ...