MySQLのジャンクションテーブルを使用して多対多リレーションシップを設定しています。表アーティクルはアクティビティテーブルArticle_Activityに関連しています。私はその記事に関連するすべての活動のGridViewのを表示したい1条のビューをレンダリングするときにモデルの記事で 私はこのYii2でActiveRecord関係に基づいてActiveDataProviderを作成
public function getActivities()
{
return $this->hasMany(Activity::className(), ['id' => 'activity_id'])
->viaTable('article_activity', ['article_id' => 'id']);
}
のような関係を設定しています。 ほとんどの人がこれに見える方法は、ActiveDataProviderを作成し、関連するデータをフェッチするクエリを挿入することですが、モデルにリレーション設定があるので少し冗長であり、そこからデータプロバイダを取得する方法が必要です。
私の質問は:GridViewのすべての関連レコードを表示するために使用できるインスタンス化されたモデルの関係に基づいてyii \ data \ ActiveDataProviderまたはyii \ db \ Queryを取得する方法はありますか?
属性のように呼び出すと、Yii2によってクエリが実行され、実際のクエリ結果が返されます。メソッドを直接呼び出すと、クエリオブジェクトが取得されます。 – marche
申し訳ありません。あなたが答えたときに私の愚かなコメントを削除しました。あなたはあなたの解決策でそれを正しく書きました。御時間ありがとうございます! –