Cakephp 3 несколько ассоциаций той же модели

Я создаю игру. На данный момент у меня есть 3 таблицы, «игры», «пользователи» и «games_users». Для «игр» и «пользователей» я запек все файлы. Ассоциация для «games_users» работает нормально.

Это мои таблицы:

CREATE TABLE `games` (
`id` int(11) NOT NULL,
`owner` int(11) NOT NULL,
`userturn` int(11) NOT NULL,
`tag` varchar(20) NOT NULL,
`status` int(1) NOT NULL,
`gametype_id` int(11) NOT NULL,
`won` int(11) NOT NULL,
`created` datetime NOT NULL,
`modified` datetime NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

CREATE TABLE `users` (
`id` int(11) NOT NULL,
`facebook` varchar(20) NOT NULL,
`first_name` varchar(20) NOT NULL,
`last_name` varchar(20) NOT NULL,
`username` varchar(20) NOT NULL,
`password` varchar(255) NOT NULL,
`email` varchar(50) NOT NULL,
`created` datetime NOT NULL,
`modified` datetime NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

CREATE TABLE `games_users` (
`game_id` int(11) NOT NULL,
`user_id` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

Мои ассоциации для games_users:

В GamesTable:

$this->belongsToMany('Users', [
'foreignKey' => 'game_id',
'targetForeignKey' => 'user_id',
'joinTable' => 'games_users'
]);

В UsersTable:

$this->belongsToMany('Games', [
'foreignKey' => 'user_id',
'targetForeignKey' => 'game_id',
'joinTable' => 'games_users'
]);

В таблице «игры» есть две колонки «userturn» и «выиграл», оба они user_id. Как я могу сделать ассоциации для этих столбцов?

0

Решение

Вы можете настроить несколько ассоциаций для таблицы «Пользователи» в таблице «Игры», используя разные псевдонимы для пользователей.

В GamesTable:

$this->belongsTo('UserTurn', [
'className' => 'Users',
'foreignKey' => 'userturn'
]);

$this->belongsTo('Won', [
'className' => 'Users',
'foreignKey' => 'won'
]);
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector