2013-07-25 2 views
1

Мой прямой вопрос:MVC - отношения «многие ко многим» - их собственные модели?

Если у меня есть много-ко-многим в моей базе данных (как в следующих таблицах)

User   Role   UserRole 
    user_id  role_id  user_id 
           role_id 

Должен ли UserRole иметь свою собственную модель при подключении к этой базе данных к MVC?

В контексте:

Я переписывание моей полностью самостоятельно написанный вебе-службы с рамкой MVC, и я решил использовать Yii. У меня есть возможность генерировать много кода из моих таблиц базы данных, но я запутался, следует ли моделировать таблицы отношений «многие ко многим» (например, UserRole выше).

Заранее благодарен!

+0

Я не уверен, что этот пример (Пользователи и роли) - это МНОГИЕ МНОГИЕ отношения. Потому что это больше похоже на каждого пользователя, у которого есть одна Роль, и каждая Роль, имеющая много Пользователей. Но, во всяком случае, для отношений много-много, ваше определение отношения будет выглядеть так: 'return array ( 'role' => array (self :: MANY_MANY, 'Role', 'user_role (user_id, role_id)'), ); 'с' user_role' является таблицей соединений, а 'user_id' и' role_id' являются внешними ключами. –

+0

Значит, вы имеете в виду, что у UserRole не должно быть собственной модели, верно? Я действительно новичок в Yii sry – jelgh

+1

Да. 'UserRole' не нуждается в собственной модели –

ответ

2

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

У пользователя UserRole есть своя модель? №

Can UserRole может иметь собственную модель? Да.

Должен ли пользовательский ролик иметь свою собственную модель? Если ваш много-ко многим содержит только два идентификатора, я бы не добавил его к модели.

0

для многих многих отношениях, ваше определение отношения будет так: return array('roles'=>array(self::MANY_MANY, 'Role', 'user_role(user_id, role_id)'),); с user_role быть таблица соединения и user_id и role_id быть внешние ключи.

+0

Спасибо. Узнайте больше о Relational AR. – jelgh

Смежные вопросы