2016-03-23 10 views
0

私の要件では、私はリレーショナルデータを持つgridviewをリストしたい、私は2つのテーブルtbl_work(id、workid、cdr_id(tbl_cd)のforeign_key)とtbl_cd(ID、呼び出し元、 )。すべての列のYii2グリッド関係のデータ検索

の作業モデルとcdモデルでは1つの関係があります。 その後、私はtb_workテーブルでグリッドを作成し、tbl_cdテーブルレコードを表示しました。作業モデルの

検索機能私のグリッドで

$query = AuditorWorkItems::find(); 
     $query->with("cd"); 

     // add conditions that should always apply here 

     $dataProvider = new ActiveDataProvider([ 
      'query' => $query, 
     ]); 

     $this->load($params); 

     if (!$this->validate()) { 
      // uncomment the following line if you do not want to return any records when validation fails 
      // $query->where('0=1'); 
      return $dataProvider; 
     } 

     // grid filtering conditions 
    $query->andFilterWhere([ 
     'id' => $this->id, 
     'workid' => $this->workid, 
     'cdr_id' => $this->cdr_id 
    ]); 

     return $dataProvider; 

<?= GridView::widget([ 
      'dataProvider' => $dataProvider, 
      'filterModel' => $searchModel, 
      'columns' => [ 
       ['class' => 'yii\grid\SerialColumn'], 
       [ 
       'attribute' => 'cdr_id', 
       'value' => function ($model) { 
        return $model->cdr->called; 

       }, 
      ], 
      [ 

       'attribute' => 'cdr_id', 
       'value' => function ($model) { 
        return $model->cdr->caller; 
       }, 
      ], 

その表示されますが、これを実現するために、他のアイデアを持っているか、と呼ばれ、呼び出し側の値ではなく、フィルタが動作していませんtbl_cdテーブルのすべての列を使用

+0

検索方法のあなたの完全なコードを投稿してください。 – GAMITG

答えて

5

手順1:

検索モデルで変数を定義します。

public $calledValue; 

ステップ2:ルールで

は、必要なルールを適用します。

[['calledValue'], 'safe'], 

ステップ3:

あなたがロードパラメータは、このコードを書く前に、あなたの検索モデルでその列に対するデータをソートしたい場合:

$dataProvider->sort->attributes['calledValue'] = 
    [ 
    'asc' => ['tbl_cd.called' => SORT_ASC], // TABLE_NAME.COLUMN_NAME 
    'desc' => ['tbl_cd.called' => SORT_DESC], 
    ]; 

ステップ4:

今すぐデータをフィルタリングするには、このコードをグリッドフィルタリング条件に追加します。

$query->andFilterWhere(['like', 'tbl_cd.called', $this->calledValue]); 

ステップ5:あなたのインデックスファイルに今すぐ

このコードを書く:

[ 
'attribute' => 'calledValue', //To display called value 
'label' => 'Your Label', 
'value' => 'tbl_cd.called' 
], 
関連する問題