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 получаете дополнительные параметры.
Ещё смотрите здесь, работа со связными данными.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы