我已經使用了Gii AJAX Crud生成器,並且我被自己的愚蠢行爲拉上了牆。我正在使用Yii 2,並且希望使用Grid View在與交叉表中的ITSELF具有關係的表上使用Grid View進行多對多搜索。Yii2多對多通過網格視圖進行自我篩選(無屬性?)
table tag (id, name).
table tag_child (parent_id, child_id)
Class Tag
...
public function getParents()
{
return $this->hasMany(self::className(), ['id' => 'child_id'])
->viaTable('tag_child', ['parent_id' => 'id']);
}
public function getChildren()
{
return $this->hasMany(self::className(), ['id' => 'parent_id'])
->viaTable('tag_child', ['child_id' => 'id']);
}
在我網格視圖/列:
[
'class' => '\kartik\grid\DataColumn',
'attribute'=>'name',
],
[
'class' => '\kartik\grid\DataColumn',
'label' => 'Tag Type',
'value' => function($tag) {
return $tag->displayTagTypes();
},
'attribute' => 'tagTypes'
],
TagQuery.php
...
public $tagTypes;
public function search($params)
{
$query = Tag::find();
$dataProvider = new ActiveDataProvider([
'query' => $query,
]);
$this->load($params);
if (!$this->validate()) {
// $query->where('0=1');
return $dataProvider;
}
$query->joinWith('parents p');
$query->andFilterWhere(['id' => $this->id]);
$query->andFilterWhere(['like', 'tag.name', $this->name]);
return $dataProvider;
}
我能與值函數來顯示我的索引表中的結果,但我的標籤過濾器是無法搜索通過tagTypes。我如何填充?作爲一個例子,當它不是很多很多時,我可以使用將我的屬性設置爲'joinedTableName.value',它在我添加$ query-> orFilterWhere('like','parent.name ',$ this-> id)或其他。但我現在處於虧損狀態......