关于yii2的gridview关联搜索步骤

  在使用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、到此,就大功告成了!

时间: 2024-10-09 12:00:19

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

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

原文:WPF Toolkit AutoCompleteBox 实体类绑定 关键字自定义关联搜索匹配 网上的例子都是零散的   翻阅了 很多篇文章后 再根据 自己项目的实际需求  整理出一个完整的 应用例子 汉字首字母全文匹配 提取绑定实体类相应的ID值 XAML <Window x:Class="WpfApp3.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation&quo

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

一个老生常谈的问题.最近通过群里的反馈,觉得很多人还是没有去理解这个问题.今天把这个问题讲明白了,看看yii2 ActiveRecord是怎么个多表关联以及如何去优化这个关联. 场景需求: 假设我们有一张用户表user和一张用户渠道表auth,两张数据表通过user.id和auth.uid进行一对一关联.现需要在user列表展示auth表的来源渠道source,且该渠道可搜索. 首先我们先通过gii生成user和auth系列相关的model和操作.此处不做详细说明,有关gii的操作可参考gii详

Yii2的Gridview应用技巧补充

Yii2框架下的Gridview通常用来展示一张DB表中的数据,十分方便.这里只说一下经常要用到的一些小技巧,其实大多数官方文档都是有的,只是有可能需要在多个文档里. 自动创建的gridview示例. 1. 不显示Gridview自带的记录序列. 删除视图文件里下面这一行代码. ['class' => 'yii\grid\SerialColumn'] 2.字段名称居中对齐 视图里自定义headerOptions. "headerOptions" => ['style' =&

Yii2中GridView

Yii2原生SQL+GridView分页问题  http://www.yiichina.com/question/235 Yii2 GridView与dropdownList结合的用法 http://www.yiichina.com/tutorial/473 <?=$form->field($model, 'provinces')->dropDownList(ArrayHelper::map(common\models\GlobalRegion::find()->where(['r

yii2之GridView小部件

GridView小部件用于展示多条数据的列表.GridView小部件的使用需要数据提供器即yii\data\ActiveDataProvider的实例作为参数,所以 第一步就是要在控制器方法中创建这个实例然后传给视图,下面以我做的一个demo为例子进行讲解. 控制器LifeController代码: //生活记录列表 public function actionIndex() { $searchModel = new Life(['scenario' => Life::SCENARIO_SEAR

yii2的gridview批量删除

gridview区 <?= GridView::widget([ 'options' => [ 'class' => 'grid-view', 'style'=>'overflow:auto', 'id' => 'grid', ], 'dataProvider' => $dataProvider, 'showFooter' => true,//显示footer行 //'filterModel' => $searchModel, 'layout'=> '

Yii2.0 Gridview为某列增加属性

我们知道GridView组件非常方便,会自动生成数据表格.table tr td神马的全自动生成的.但是如果想定制化稍微有点难度. 比如想在某列td上应用样式. 老写法是这样的 <?= GridView::widget([ 'dataProvider' => $dataProvider, 'layout' => "{items}\n{pager}\n{summary}", 'summary' => '<p class="summary"

yii2的GridView和ActiveDataProvider具体使用

1.控制器中(以User模块的列表为例): 第一步: use backend\models\User;use yii\data\ActiveDataProvider; 第二步: public function actionIndex(){ $model=new User(); $dataProvider = new ActiveDataProvider([ 'query' => User::find()->orderBy('id'), ]); return $this->render('

Yii2.0 GridView 的强大功能

1. 去除头顶的 第1条数据 共两条 代码如下 1 <?= GridView::widget([ 2 'dataProvider' => $dataProvider, 3 'filterModel' => $searchModel, 4 'columns' => [ 5 ['class' => 'yii\grid\SerialColumn'], 6 7 'id', 8 'name', 9 'sort_order', 10 'status', 11 12 ['class' =&