1
我嘗試建立一個多對多關係的網格視圖。所以我需要查詢ActiveDataProvider
。Yii2 dataprovider與manytomany關係
我有一個表「資源」,一個表「類型」,他們之間的表'historique'。
我在我的模型中有良好的關係,但我不知道如何創建dataProvider。
在我的模型的ressource:
public function getHistorique()
{
return $this->hasMany(Historique::className(), ['idType' => 'idType']);
}
public function getType()
{
return $this->hasMany(Type::className(), ['idType' => 'idType'])
->viaTable(Historique::className(), ['idRessource' => 'idRessource']);
}
在我的模型歷史之:
public function getType()
{
return $this->hasOne(Type::className(), ['idType' => 'idType']);
}
public function getRessource()
{
return $this->hasOne(Ressource::className(), ['idRessource' => 'idRessource']);
}
終於在我的模型類型:
public function getHistorique()
{
return $this->hasMany(Historique::className(), ['idType' => 'idType']);
}
public function getRessource()
{
return $this->hasMany(Ressource::className(), ['idRessource' => 'idRessource'])
->viaTable(Historique::className(), ['idType' => 'idType']);
}
在控制器
所以(其實我ModelSearch),我想要使用來自表歷史的類型的資源。我不知道我要添加什麼
Ressource::find();
感謝我不敢靠近。我只有最後一個問題:在gridView中,當我使用GridView :: widget(['dataProvider'=> $ dataProvider])時,它可以工作。但是,當我想從其他表格中選擇一些列的網格視圖屬性而不是來源不明時。我應該從GridView的屬性寫什麼? –
@SamaëlVillette你也應該使用點符號的屬性或列名'relation.attribute' –
我會試試這個謝謝你的回答,它真的幫了我:) –