Структура Yii отношения " Многие ко многим "
-
18-09-2019 - |
Вопрос
Каков метод сохранения и обновления отношений "Многие ко многим" в Yii framework?
Решение
Существует лучшая реализация в виде поведения.
Другие советы
Если вы не создадите модель для таблицы между двумя основными таблицами, ваш единственный вариант - использовать DAO (объект доступа к базе данных) и указать SQLS с его помощью.
Взгляните на то, как демо-версия блога выполняет эту задачу.
использование MANY_MANY
тип отношения для настройки соединения "многие ко многим" между моделями (Ассоциативная таблица необходима для разделения отношения "многие ко многим" на отношения "один ко многим")
И теперь вы можете использовать все реляционные функции активных записей
Yii Framework - Окончательное руководство по Yii:Работа с базами данных-Реляционная Активная запись
Следующее расширение делает то, что вы хотите...Фреймворк Yii - Расширение:вынужденное поведение
Важная вещь, на которую следует обратить внимание:При каждом обновлении расширение очищает все предыдущие записи и создает новые.Поэтому я бы не стал использовать его, когда промежуточная таблица содержит дополнительные данные, отличные от внешних ключей.
вы могли бы настроить это в mysql level..by перейдя к реляционному представлению под каждой таблицей в phpmyadmin и предоставив необходимое условие отношения .. и используйте MANY_MANY в классе модели внутри отношений..
Этот вопрос слишком распространен.
Обычно компоненты данных со связями "МНОГИЕ ко МНОГИМ" появляются последовательно и независимо.Таким образом, вам просто нужно выполнять одно действие вставки за другим.
Если ваши отношения нуждаются в зависимом обновлении, вам следует использовать SQL - триггеры на уровне базы данных.Это обеспечит целостность данных и обеспечит довольно хорошее разделение в бизнес-логике приложения.
CREATE TRIGGER some_trigger
AFTER UPDATE ON some_table
...
END IF;
Аналогичным способом является инкапсуляция реляционных данных в одну логическую модель на уровне PHP (и, например,манипулируйте там 2-3 AR-моделями) и эмулируйте в нем логику SQL-триггеров.