Many-to-many и транзакция или json?

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Аватара пользователя
za4me
Сообщения: 152
Зарегистрирован: 2016.06.26, 15:29
Контактная информация:

Many-to-many и транзакция или json?

Сообщение za4me »

Добрый день.
Подскажите, как лучше решить следующий вопрос.

Имеется необходимость создать БД для следующего функционала:
Есть таблица авто, есть таблица комплектующих, у авто может быть неограниченное количество комплектующих.

Придумал 2 способа:
1. Создать три таблицы: авто, авто_комплектующее, комплектующие (many-to-many).
2. Создать в таблице авто поле "комплектующие" и в него сохранять id комплектующих в json формате.

Если я правильно понял, то первый способ приоритетный т.к. используя второй, я могу удалить строку из комплектующих, а в таблице авто будет хранится id на несуществующую строку. В итоге необходимо будет сделать некий функционал для удаления, проверяющий используется ли удаляемый id в авто таблице. Но в этом варианте я просто могу пройти циклом по id и получить нужные для меня данные, к примеру цену.

По первому способу есть следующий вопрос:
Я могу добавить авто, сохранить его. Перейти в action который добавляет конкретному авто комплектующие и все будет ок.
Но если я хочу сделать добавление авто и комплектующих одной операцией, то не пойму как мне это реализовать, ведь я не могу получить следующий auto_increment в таблице.

Немного псевдокода:

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

Транзакция добавления авто и его комплектующих
    Добавление авто,
    Сохранение авто,
    
    Получение сохраненного авто (id),
    
    Добавление комплектующих в таблицу авто_комплектующее (т.к. предыдущим пунктом я получил id автомобиля).
Смущает вот это сохранение и снова получение т.к. необходимо будет добавлять еще какое-то уникальное поле по которому я буду четко получать именно последнее сохраненное авто.
Аватара пользователя
Alexum
Сообщения: 683
Зарегистрирован: 2016.09.26, 10:00

Re: Many-to-many и транзакция или json?

Сообщение Alexum »

А зачем вам отдельно получать id авто? После успешного $model->save() id станет доступно у модели.
Аватара пользователя
za4me
Сообщения: 152
Зарегистрирован: 2016.06.26, 15:29
Контактная информация:

Re: Many-to-many и транзакция или json?

Сообщение za4me »

Alexum писал(а): 2017.02.13, 15:44 А зачем вам отдельно получать id авто? После успешного $model->save() id станет доступно у модели.
Действительно, протупил, спасибо.
Ответить