Задать вопрос
@maks280795

Как сделать отношение без связанных таблиц?

Добрый день, у меня есть relation в модели Items:
public function getPlan()
{
    return $this->hasOne(Plans::className(), ['id' => 'value'])
        ->viaTable(ItemsPropsValues::tableName(), ['item_id' => 'id'], function ($query) {
            /** @var ActiveQuery $query */
            $query->where(['type_id' => $this->category->itemsPropsTypes['plan_id']->id]);
        });
}


Оно работает, но так как были использованы свойства самой модели через $this, то не поддерживается столь необходимая ленивая загрузка.

Просто взять и объявить foreign key не могу, Items это товар который имеет различные наборы свойств(ItemsPropsTypes) в зависимости от того какая ему категория назначена.

Как мне отредактировать готовый relation, чтобы получить связь которая поддерживает ленивую загрузку?
  • Вопрос задан
  • 169 просмотров
Подписаться 1 Оценить 4 комментария
Пригласить эксперта
Ответы на вопрос 1
@maks280795 Автор вопроса
Структура примерно следующая:
Items (id, category_id)
ItemsPropsTypes(id, category_id)
ItemsPropsValues(item_id, type_id, value)
Plans(id)

Мне нужно получить объект Plans id которого хранится в таблице ItemsPropsValues в атрибуте value, с условием, что type_id == 4.
Связь эта необходима в модели Items, достать её можно по FK Items_id- ItemsPropsValues_item_id.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы