yiiadmin - многие ко многим в интерфейсе администратора yii-framework - PullRequest
1 голос
/ 24 июля 2010

В настоящее время я расширяю расширение администратора yii-s, yiiadmin.

Какой самый простой способ получить поле множественного выбора listBox в представлении создания модели, что будет отображать отношение многие ко многим, например, у меня есть сводная таблица, которая содержит эти отношения статьи-категории, а также таблицы Article и Category.

У меня уже есть эти отношения, определенные в моделях, и мне даже удалось получить некоторые другие связи в виде списка, например Author.name, полученные через поле author_id в таблице Article.

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

Таким образом, это будет несколько записей / строк в сводной таблице article_category по одной Подача статьи.

В то же время сама таблица Article не содержит полей, относящихся к категории. Таким образом, сводная таблица берет атрибут id статьи и связывает его с категорией (другая модель / таблица) id и делает из этого ряд.

Так, например, у меня есть эти таблицы / модели:

Статья >>> id | название | автор | Текст


Категория >>> id | имя | описание


ArticleCategory >>> id | article_id | category_id


И я хочу заполнить эту третью сводную таблицу несколькими строками из списка множественного выбора. Из статьи создайте представление / форму yiiadmin (часто только через одно представление).

Я также хочу автоматически отобразить category.name из таблицы Category в этот список, соответственно связанный к идентификаторам категории, чтобы я мог показывать имена из таблицы категорий, а по выбору и представлению заполнять сводную таблицу идентификаторы категории (следовательно, не имена)

Возможно ли это и как это можно сделать?

1 Ответ

1 голос
/ 10 августа 2010

Попробуйте это расширение, чтобы упростить сохранение отношений MANY_MANY:
http://www.yiiframework.com/extension/cadvancedarbehavior/
(gii-template-collection использует его и предоставляет виджет CRelated для создания заполненных элементов формы Relation, он работает довольно хорошо. Iпробовал: http://www.yiiframework.com/extension/gii-template-collection/)

Этот претендует на то, чтобы сделать что-то похожее с отношениями МНОГО-МНОГО: http://www.yiiframework.com/extension/save-relations-ar-behavior/

Кроме того, довольно легко написать код самостоятельно. Простозаполните CHtml :: listBox моделями, с которыми он связан, затем в действии выполните итерацию по ним и добавьте связи в таблицу 'pivot' с помощью простого SQL-кода. Или создайте модель для таблицы-сводки, и вы используете обычный save ()AR-методы тоже. Вы можете делать это и в событии модели afterSave () вместо действия контроллера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...