继续之后:
Yii2
SearchModel中的search()如何工作?
我希望能够过滤GridView
列关系数据。这就是我的意思:
我有两个表,TableA
和``。两者都具有使用Gii
生成的corrTableBesponding模型。 TableA具有TableB中值的外键,如下所示:
TableA
attrA1, attrA2, attrA3, attrA4(TableB.attrB1)
TableB
attrB1, attrB2, attrB3
Joining table A & B : TableC
attrC1, attrC2, attrA4
attrA1
和attrB1
是其相应表格的主键。
现在,我有一个attrA2,attrA3和attrB2的Yii2 GridView。我在attrA2和attrA3上有一个工作过滤器,以便我可以搜索列值。我也对这两个列进行了工作排序 - 只需单击列标题即可。我希望能够在attrB2上添加这个过滤和排序。
答案 0 :(得分:0)
第一: 在index.php的'列'删除attrA4并添加此项以获取搜索文件:
[
'attribute'=>'TableB',
'value'=>'TableB0.attrB2', // this is get function from TableA model class
],
第二: 在TableASearch类中删除rules()函数attrA4,它位于'整数'并在“安全”下将其添加到第二个数组中。
第三: 在TableASearch类的搜索功能中添加:
$query->joinWith('TableB0');
接下来:$ query-> andFilterWhere([... remove parameter:
'attrA4' => $this->attrA4,
并添加第二个$ query-> andFilterWhere([在最后添加参数:
->andFilterWhere(['like', 'TableB.attrB2', $this->attrA4]);
你在youtube上的DoingITeasyChannel上有很好的基本功能。
祝你好运!