Подтвердить что ты не робот

Как использовать константу в состоянии ON в Yii2 hasMany отношение

Я пытаюсь создать полиморфную ассоциацию, которая распространена в Rails, но, к сожалению, не в Yii2. В рамках реализации мне нужно определить отношение:

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

Но это не работает, потому что "Person" рассматривается как атрибут текущей модели, но это константа (имя класса для полиморфной ассоциации).

Если я пытаюсь использовать 'andWhere', он добавляет условие, конечно, в предложение WHERE вместо предложения ON, в результате чего возвращаются только записи с существующим изображением.

public function getImages()
{
   return $this->hasMany(RecipeImage::className(), ['imageable_id' => 'id'])->
       andWhere(['imageable_type' => 'Ingredient']);
}

Как я могу определить отношение? Не существует метода andOn.

4b9b3361

Ответ 1

В этом случае вы можете изменить условие ON с помощью метода andOnCondition:

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

Официальные документы: