dkrylov
@dkrylov

Как грамотно сделать связь 3х таблиц в yii2?

Добрый день уважаемые программисты ;)

Разбираюсь потихоньку в фреймворком yii2, а именно пишу интернет магазин. Хочется достигнуть некой гибкости, в связи с чем применяю такой подход:

1) Product - Таблица с товарами и общими характеристиками
2) Product_options - Опции товаров (например name: цвет, value: черный)
3) options_bundle - связка между товарами и определенной опцией
b5fc78f5067f4b30b842dd4d638a3947.png

Используя hasMany() получается вот такой массив:
Array
(
    [id] => 1
    [name] => Товар 1
    [price] => 100.2
    [options] => Array
        (
            [0] => Array
                (
                    [id] => 1
                    [product_id] => 1
                    [option_id] => 1
                )

        )

)


ProductController.php
$product = Product::find()->select(['id', 'name', 'price'])->with('options')->asArray()->where(['id' => $id])->one();


Product.php
public function getOptions()
{
        return $this->hasMany(OptionBundle::className(), ['product_id' => 'id']);
}


Всю голову сломал, как реализовать связку с 3 таблицей - значением этих самых опций.

Прекрасно понимаю что задача довольно тривиальна, но все же по причине того что только начал разбираться с фреймворком не знаю как это сделать. Гугля и читая документацию просто напросто не могу додумать что к чему. Подскажите как это решается.
  • Вопрос задан
  • 175 просмотров
Решения вопроса 1
slo_nik
@slo_nik Куратор тега Yii
Добрый день.
Уверен, что это видео Вам поможет разобраться с вопросом.
Ну пока попробуйте получить цвет модели через связь, как-то так:
echo $model->options->name;
Это для вызова в Product, через связь options получаете дополнительные параметры.
Ещё смотрите здесь, работа со связными данными.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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