Yii рамки отношения многие ко многим

Каков метод сохранения и обновления отношений "многие ко многим" в структуре Yii?

6 ответов

Решение

Если вы не создадите модель для таблицы между двумя основными таблицами, ваш единственный вариант - использовать DAO (объект доступа к базе данных) и указывать для него SQL.

Посмотрите, как блог-демо выполняет эту задачу.

Использование MANY_MANY тип отношения для настройки соединения "многие ко многим" между моделями (ассоциативная таблица необходима для разбиения отношения "многие ко многим" на отношения "один ко многим"). Теперь вы можете использовать все реляционные функции Active Records.

Yii Framework - полное руководство по Yii: работа с реляционными базами данных Active Record

Следующее расширение делает то, что вы хотите... Yii Framework - Расширение: cadvancedbehavior

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

Вы можете установить это на уровне mysql, перейдя к реляционному представлению под каждой таблицей в phpmyadmin и предоставить необходимое условие отношения... и использовать MANY_MANY в классе модели внутри отношений.

Вопрос слишком распространенный.

Обычно компоненты данных с отношениями MANY к MANY появляются последовательно и независимо. Так что вам просто нужно сделать одно действие вставки за другим.

Если ваши отношения нуждаются в зависимом обновлении, вы должны использовать триггеры SQL на уровне базы данных. Это обеспечит целостность данных и даст достаточно хорошее разделение в бизнес-логике приложения.

CREATE TRIGGER some_trigger
    AFTER UPDATE ON some_table
    ...
END IF;

Аналогичным образом можно инкапсулировать реляционные данные в одну логическую модель на уровне PHP (и, например, манипулировать там 2-3 моделями AR) и эмулировать в ней логику триггеров SQL.

Другие вопросы по тегам