Похожие товары

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
dps_guest
Сообщения: 44
Зарегистрирован: 2019.03.04, 15:31

Похожие товары

Сообщение dps_guest »

1.й вариант выбор с той же категории
2-й вариант который хочу добавить, выбор вручную товаров что выводить.

Код: Выделить всё

 <?= $form->field($model, 'variations')->widget(Select2::classname(), [
                        'data' => ArrayHelper::map(Product::find()->select(['name', 'id'])->all(), 'id', 'name'),
                        'language' => 'ru',
                        'options' => ['placeholder' => 'Выберите товары'],
                        'pluginOptions' => [
                            'allowClear' => true,
                            'multiple' => true,
                        ],
                    ]);?>
Если один товар все окей, если же 2-а товара выбираю, то в бд записывает в поле в таком формате 111,112.
Но в самой вьюхе пустое поле..
unknownby
Сообщения: 749
Зарегистрирован: 2019.11.05, 16:34
Контактная информация:

Re: Похожие товары

Сообщение unknownby »

А можно узнать структуру БД и при помощи чего записываете multiple
Для сохранения множества к одной записи у вас должна быть таблица, которая соединяет две модели.
Приведу пример.
У меня есть новости и теги к новости. Добавляются они через Select2 тоже multiple
В модели новости у меня есть помощник, связь и в rules указал (демонстрирую куски кода)

Код: Выделить всё

public function behaviors()
    {
        return [
            'manyToManyBehavior' => [
                'class' => ManyToManyBehavior::className(),
                'relations' => [
                    'tags_list' => [
                        'tags',
                    ],
                ],
            ],
        ];
    }
    public function getTags(){
        return $this->hasMany(Tags::className(), ['tags_id' => 'tags_id'])->from([Tags::TABLE_ALIAS => Tags::tableName()])
            ->viaTable(NewsTags::tableName(), ['news_id' => 'news_id']);
    }
    public function rules() {
        return [
            [['tags_list', ], 'safe'],
        ];
    }
Модель NewsTags содержит в себе newstags_id, news_id, tags_id
dps_guest
Сообщения: 44
Зарегистрирован: 2019.03.04, 15:31

Re: Похожие товары

Сообщение dps_guest »

Ага, понял как вы сделали.
Я думал сделать немного иначе)
Хранить в базе товара ,в колонке variations id товара 3,variations у етого товара 111 и 112.
Потом разобрать ето поле как два id товара и вывести два товара по id 111 и 112 соответственно.
unknownby
Сообщения: 749
Зарегистрирован: 2019.11.05, 16:34
Контактная информация:

Re: Похожие товары

Сообщение unknownby »

dps_guest писал(а): 2020.01.28, 14:43 Ага, понял как вы сделали.
Я думал сделать немного иначе)
Хранить в базе товара ,в колонке variations id товара 3,variations у етого товара 111 и 112.
Потом разобрать ето поле как два id товара и вывести два товара по id 111 и 112 соответственно.
А зачем усложнять жизнь? Тем более через данную модель, которая связывает к примеру новость и теги, можно сделать еще что-нибудь. Тот же поиск по тегам используя связь joinWith с моделью NewsTags или сделать облако тегов.
Ответить