Railsで一般的ですが、残念ながらYii2ではそうではありません)ポリモーフィックな関連付けを作成しようとしています。
public function getImages()
{
return $this->hasMany(RecipeImage::className(),
['imageable_id' => 'id', 'imageable_type' => 'Person']);
}
しかし、「Person」は現在のモデルの属性として扱われるため、これは機能しませんが、定数(多態的な関連付けのクラス名)です。
「andWhere」を使用しようとすると、もちろん、ON句ではなくWHERE句に条件が追加されるため、既存の画像を持つレコードのみが返されます。
public function getImages()
{
return $this->hasMany(RecipeImage::className(), ['imageable_id' => 'id'])->
andWhere(['imageable_type' => 'Ingredient']);
}
関係を定義するにはどうすればよいですか? andOnメソッドはありません。
この場合、andOnCondition
メソッドを使用してON条件を変更できます。
public function getImages()
{
return $this->hasMany(RecipeImage::className(), ['imageable_id' => 'id'])
->andOnCondition(['imageable_type' => 'Person']);
}
公式ドキュメント: