2016-05-03 24 views
0

上Yii2のGridViewのフィルタリング本に続き:PHP、リレーショナル値のphpエンティティ関係yii2

Yii2 SearchModelでの検索は()どのように動作しますか?

GridViewのリレーショナルデータの列をフィルタリングしたいと考えています。これは私の意味です:

私は2つのテーブルTableAと ``を持っています。どちらもGiiを使用して生成されたcorrTableBespondingモデルを持っています。テーブルAは、このように、テーブルBの値への外部キーを持っています

TableA 
attrA1, attrA2, attrA3, attrA4(TableB.attrB1) 

TableB 
attrB1, attrB2, attrB3 

Joining table A & B : TableC 
attrC1, attrC2, attrA4 

attrA1attrB1は、対応するテーブルの主キーです。

今、私はattrA2、attrA3およびattrB2のYii2 GridViewを持っています。私は、attrA2とattrA3上の作業フィルターを持っているので、列の値を検索することができます。私はまた、これらの2つの列の作業ソートも - 列ヘッダーをクリックするだけです。 attrB2でもこのフィルタリングと並べ替えを追加できるようにしたいと思います。まず

+0

実際のコードを追加して、結果に正確に何を表示したいかを明確にしてください。 – StalkAlex

+0

これは便利ですhttp://stackoverflow.com/questions/34916480/how-to-search-filter-multipe-relation-table-and-groupping-in-yii2 – scaisEdge

答えて

0

: のindex.php「では列」attrA4を削除し、これは検索が提出得るために追加で:)(TableASearchクラスで ルールから削除「整数の下にある関数attrA4:セカンド

[ 
    'attribute'=>'TableB', 
    'value'=>'TableB0.attrB2', // this is get function from TableA model class     
    ], 

を'これを2番目の配列の' safe 'の下に追加します。

サード:検索機能の追加でTableASearchクラスで :

$query->joinWith('TableB0'); 

次から:$ query-> andFilterWhere([...削除パラメータ:

'attrA4' => $this->attrA4, 

と第二$に追加query-> andFilterWhere([最後にパラメータを追加する:

->andFilterWhere(['like', 'TableB.attrB2', $this->attrA4]); 

あなたは良い基本的なものがありますDoingITeasyChannel on youtubeで。

幸運を祈る!