Связь MANY_MANY

Обсуждение документации. Переводы Cookbook и авторские рецепты.
Ответить
Аватара пользователя
Redee
Сообщения: 75
Зарегистрирован: 2013.03.05, 22:04

Связь MANY_MANY

Сообщение Redee »

Здесь очень наглядно объясняется связь МНОГИЕ ко МНОГИМ через FK (InnoDB)
когда один id таблицы А может находится во многих строках таблицы B и
один id таблицы B может быть во многих строках таблицы A
на примере таблиц Юзер - Проект
http://www.yiiframework.com/forum/index ... entry61892

что не можем наблюдать в оф. документации
http://www.yiiframework.com/doc/guide/1 ... tabase.arr
User class:

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

public function relations()
{
    return array(
        'projects' => array(self::MANY_MANY, 'Project', 'project_user_assignment(user_id, project_id)'),
    );
} 
Project class:

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

public function relations()
{
    return array(
        'users' => array(self::MANY_MANY, 'User', 'project_user_assignment(project_id, user_id)'),
    );
} 
видим что есть четкое наименование связи - project_user_assignment и два столбца с FK - project_id, user_id
заметим что в скобках 1ый столбец с FK ставим от родного класса >>> если описываем в модели User.php (в БД таблица - tbl_user) >>> то 1ым user_id, перед тем указав модель другой таблицы >>> Project
Аватара пользователя
Redee
Сообщения: 75
Зарегистрирован: 2013.03.05, 22:04

Re: Связь MANY_MANY

Сообщение Redee »

также следует отметить что такая связь работает через таблицу-посредник project_user_assignment - соответствий
в которой две колонки являются PK + FK на родительскую таблицу
в ней мы будем наблюдать частные случаи связи ONE 2 MANY
к примеру будут поля
1 - 1 / 1 - 2 / 1 - 5
3 - 7 / 15 - 7 / 28 - 7
Ответить