2016-05-03 50 views
0

根據這一點:對關係價值的PHP實體關係PHP,Yii2 GridView控件過濾yii2

Yii2如何搜索()在SearchModel工作?

我希望能夠過濾關係數據的GridView列。這就是我的意思:

我有兩個表,TableA和``。兩者都使用Gii生成corrTableBesponding模型。表A具有TableB中的外鍵的值,就像這樣:

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

TableB 
attrB1, attrB2, attrB3 

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

attrA1attrB1是其對應表的主鍵。

現在,我有一個Yii2的attrA2,attrA3和attrB2 GridView。我在attrA2和attrA3上有一個工作過濾器,這樣我就可以搜索列值。我也有這兩列的工作排序 - 只需點擊列標題即可。我希望能夠在attrB2上添加這個過濾和排序。

+0

請添加真實的代碼並澄清你想要在結果中看到什麼。 – StalkAlex

+0

This coulld be useful http://stackoverflow.com/questions/34916480/how-to-search-filter-multipe-relation-table-and-groupping-in-yii2 – scaisEdge

回答

0

第一: 在index.php文件中的「列」刪除attrA4並添加此獲得搜索領域:

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

二: 在TableASearch類從規則中移除()函數attrA4這是在「整'並將其添加到'安全'下的第二個數組中。

三: 在搜索功能添加TableASearch類:

$query->joinWith('TableB0'); 

下一頁來源:$查詢 - > andFilterWhere([...刪除參數:

'attrA4' => $this->attrA4, 

,並添加第二個$ query-> andFilterWhere([最後加參數:

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

你有很好的基礎知識在YouTube上的DoingITeasyChannel上。

祝你好運!