PHP, Yii2 GridView 对关系值的过滤
2022-08-30 21:05:33
从此开始:
Yii2 SearchModel 中的 search() 如何工作?
我希望能够筛选一列关系数据。这就是我的意思:GridView
我有两张桌子,还有.两者都使用Gii生成了相应的模型。 具有 中值的外键,如下所示:TableA
TableB
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