在Yii2中如何在ON条件下使用常量有很多关系

在Yii2中如何在ON条件下使用常量有很多关系,yii2,has-many,polymorphic-associations,relation,Yii2,Has Many,Polymorphic Associations,Relation,我试图创建一个多态关联,这在Rails中很常见,但不幸的是在Yi2中不常见。作为实施的一部分,我需要定义以下关系: 公共函数getImages() { 返回$this->hasMany(RecipeImage::className(), ['imageable_id'=>'id','imageable_type'=>'Person']; } 但这不起作用,因为“Person”被视为当前模型的一个属性,但它是一个常量(多态关联的类名) 如果我尝试使用'andWhere',它当然会在WHERE子句

我试图创建一个多态关联,这在Rails中很常见,但不幸的是在Yi2中不常见。作为实施的一部分,我需要定义以下关系:

公共函数getImages() { 返回$this->hasMany(RecipeImage::className(), ['imageable_id'=>'id','imageable_type'=>'Person']; } 但这不起作用,因为“Person”被视为当前模型的一个属性,但它是一个常量(多态关联的类名)

如果我尝试使用'andWhere',它当然会在WHERE子句而不是ON子句中添加条件,从而导致只返回具有现有图像的记录

公共函数getImages() { return$this->hasMany(RecipeImage::className(),['imageable_id'=>'id'])-> 其中(['imageable_type'=>'component']); }
我如何定义这种关系?没有andOn方法。

在这种情况下,您可以使用
和oncondition
方法修改ON条件:

public function getImages()
{
    return $this->hasMany(RecipeImage::className(), ['imageable_id' => 'id'])
        ->andOnCondition(['imageable_type' => 'Person']);
}
官方文件: