Yii2-GridView 中讓關聯字段帶搜索和排序功能示例

 更新時間:2017年01月21日 16:27:09   作者:散步在操場上   我要評論
這篇文章主要介紹了Yii2-GridView 中讓關聯字段帶搜索和排序功能示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下。

情境要求:

要在訂單(Order)視圖的gridview中顯示出客戶(Customer)姓名,并使其具有與其它字段相同的排序和搜索功能。

數據庫結構

訂單表order含有字段customer_id 與 客戶表customer的id字段關聯

首先確保在Order Model中包含以下代碼:

public function getCustomer()
{
  return $this->hasOne(Customer::className(), ['id' => 'customer_id']);
}

用gii會自動生成此代碼;

第一步:

在OrderSearch添加一個$customer_name變量

class OrderSearch extends Order
{
  public $customer_name; //<=====就是加在這里
}

第二步:

修改OrderSearch中的search函數

public function search($params)
{
  $query = Order::find();
  $query->joinWith(['customer']);<=====加入這句
  $dataProvider = new ActiveDataProvider([
    'query' => $query,
  ]);
  
  $dataProvider->setSort([
    'attributes' => [
      /* 其它字段不要動 */  
      /* 下面這段是加入的 */
      /*=============*/
      'customer_name' => [
        'asc' => ['customer.customer_name' => SORT_ASC],
        'desc' => ['customer.customer_name' => SORT_DESC],
        'label' => 'Customer Name'
      ],
      /*=============*/
    ]
  ]); 

  if (!($this->load($params) && $this->validate())) {
    return $dataProvider;
  }

  $query->andFilterWhere([
    'id' => $this->id,
    'user_id' => $this->user_id,
    'customer_id' => $this->customer_id,
    'order_time' => $this->order_time,
    'pay_time' => $this->pay_time,
  ]);

  $query->andFilterWhere(['like', 'status', $this->status]);
   $query->andFilterWhere(['like', 'customer.customer_name', $this->customer_name]) ;//<=====加入這句
  
  return $dataProvider;
}

第三步:

修改order/index視圖的gridview

<?= GridView::widget([
  'dataProvider' => $dataProvider,
  'filterModel' => $searchModel,
  'columns' => [
    ['class' => 'yii\grid\SerialColumn'],
    'id',
    'customer_id', 
    'status',
    ['label'=>'客戶', 'attribute' => 'customer_name', 'value' => 'customer.customer_name' ],//<=====加入這句
    ['class' => 'yii\grid\ActionColumn'],
  ],
]); ?>

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • php 仿Comsenz安裝效果代碼打包提供下載

    php 仿Comsenz安裝效果代碼打包提供下載

    一直都覺得Comsenz產品的數據表安裝效果很漂亮,今天抽了個空,把它的核心代碼都提煉出來了。
    2010-05-05
  • php操作mysqli(示例代碼)

    php操作mysqli(示例代碼)

    php操作mysqli的示例代碼。需要的朋友可以過來參考下,希望對大家有所幫助
    2013-10-10
  • php文件上傳類的分享

    php文件上傳類的分享

    這篇文章主要為大家分享了php文件上傳類的相關代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • PHP類的自動加載機制實現方法分析

    PHP類的自動加載機制實現方法分析

    這篇文章主要介紹了PHP類的自動加載機制實現方法,結合實例形式分析了__autoload方法進行類自動加載操作的相關實現技巧與使用注意事項,需要的朋友可以參考下
    2019-01-01
  • php類聲明和php類使用方法示例分享

    php類聲明和php類使用方法示例分享

    這篇文章主要介紹了php類聲明和php類使用方法示例,需要的朋友可以參考下
    2014-03-03
  • PHP代碼實現爬蟲記錄——超管用

    PHP代碼實現爬蟲記錄——超管用

    這篇文章主要通過創建crawler數據庫,使用robot.php記錄來訪的爬蟲信息從而將信息插入數據庫,從而使用php代碼實現爬蟲記錄,有需要的小伙可以來參考下。
    2015-07-07
  • CodeIgniter集成smarty的方法詳解

    CodeIgniter集成smarty的方法詳解

    這篇文章主要介紹了CodeIgniter集成smarty的方法,結合實例形式詳細分析了CodeIgniter集成Smarty的具體步驟與相關注意事項,需要的朋友可以參考下
    2016-05-05
  • PHP文件緩存smarty模板應用實例分析

    PHP文件緩存smarty模板應用實例分析

    這篇文章主要介紹了PHP文件緩存smarty模板應用方法,結合實例形式較為詳細的分析了smarty模板緩存的相關使用技巧,需要的朋友可以參考下
    2016-02-02
  • PHP 微信掃碼支付源代碼(推薦)

    PHP 微信掃碼支付源代碼(推薦)

    本文給大家介紹php微信掃碼支付的源代碼,代碼中包含四個文件createUrl.php、ArrayToXML.php、returnGoodsUrl.php、notifyUrl.php。具體詳細代碼大家參考下本文吧
    2016-11-11
  • laravel中的一些簡單實用功能

    laravel中的一些簡單實用功能

    這篇文章主要給大家介紹了關于laravel中一些簡單實用功能的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-11-11

最新評論

福建体育彩票时时彩11