2016-02-24 154 views
0

我正在構建一個遊戲。現在我有3桌,'遊戲','用戶'和'games_users'。對於'遊戲'和'用戶'我烘烤了所有文件'games_users'的關聯正常。Cakephp 3多個關聯相同模型

這是我的表:

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'和'won'兩列,它們都是user_id的。我如何爲這些列創建關聯?

回答

1

您可以使用不同的用戶別名在遊戲表中設置多個關聯到用戶表。

GamesTable

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

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