根據這一點:PHP,Yii2 GridView控件過濾的關係值
Yii2 how does search() in SearchModel work?
我希望能夠過濾關係數據的GridView
列。這就是我的意思:
我有兩個表,TableA
和TableB
。兩者都有使用Gii生成的相應模型。 TableA
具有TableB
一個外鍵的值,這樣的:
TableA
attrA1, attrA2, attrA3, TableB.attrB1
TableB
attrB1, attrB2, attrB3
attrA1和attrB1是它們相應的表的主鍵。
現在,我有一個Yii2 GridView
的attrA2
,attrA3
和attrB2
。我在attrA2
和attrA3
上有一個工作過濾器,這樣我就可以搜索列值。我也有這兩列的工作排序 - 只需點擊列標題即可。我希望能夠在attrB2
上添加此篩選和排序。
我TableASearch
模式是這樣的:
public function search($params){
$query = TableA::find();
$dataProvider = new ActiveDataProvider([
'query' => $query,
]);
if (!($this->load($params) && $this->validate())) {
return $dataProvider;
}
$this->addCondition($query, 'attrA2');
$this->addCondition($query, 'attrA2', true);
$this->addCondition($query, 'attrA3');
$this->addCondition($query, 'attrA3', true);
return $dataProvider;
}
在我TableA
模式,我這樣設置
public $relationalValue;
public function afterFind(){
$b = TableB::find(['attrB1' => $this->attrB1]);
$this->relationalValue = $b->relationalValue;
}
相關值雖然可能不是這樣做的最佳方式。我想我必須在我的搜索功能中使用$ relationalValue,但我不知道如何。同樣,我希望能夠通過此列進行排序 - 就像我通過點擊標題鏈接可以獲得attrA2
和AttrA3
一樣。任何幫助,將不勝感激。謝謝。
您是否可以更新您的問題以使searchModel反映框架的最新更改。 –