Cakephp 3多个关联相同的模型

时间:2016-02-24 03:28:35

标签: php cakephp associations

我正在建造一个游戏。现在我有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'和'won',它们都是users_id。如何为这些列建立关联?

1 个答案:

答案 0 :(得分:1)

您可以使用用户的不同别名为Games表中的Users表设置多个关联。

GamesTable

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

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