PHP,Yii2 GridView过滤关系值php实体关系yii2

时间:2016-05-03 10:30:03

标签: join yii2 relational-database

继续之后:

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

attrA1attrB1是其相应表格的主键。

现在,我有一个attrA2,attrA3和attrB2的Yii2 GridView。我在attrA2和attrA3上有一个工作过滤器,以便我可以搜索列值。我也对这两个列进行了工作排序 - 只需单击列标题即可。我希望能够在attrB2上添加这个过滤和排序。

1 个答案:

答案 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上有很好的基本功能。

祝你好运!