bin/cake 不建立关联
bin/cake doesn't create association
我有 2 个表,我想在它们之间创建关联,但是 bin/cake 做的不正确。
CREATE TABLE `teams` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`joiningID` varchar(20) COLLATE utf8_unicode_ci NOT NULL,
`name` varchar(45) COLLATE utf8_unicode_ci NOT NULL,
`admin` int(11) NOT NULL,
`created` datetime NOT NULL,
`modified` datetime NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `admin` (`admin`),
UNIQUE KEY `name` (`name`),
CONSTRAINT `fk_admin` FOREIGN KEY (`admin`) REFERENCES `users` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=34 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
用户:
CREATE TABLE `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
`email` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
`encrypted_password` varchar(80) COLLATE utf8_unicode_ci NOT NULL,
`salt` varchar(10) COLLATE utf8_unicode_ci NOT NULL,
`facebook_json` varchar(700) COLLATE utf8_unicode_ci DEFAULT NULL,
`created` datetime DEFAULT NULL,
`modified` datetime DEFAULT NULL,
`team` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `email` (`email`),
KEY `users_ibfk_1` (`team`),
CONSTRAINT `users_ibfk_1` FOREIGN KEY (`team`) REFERENCES `teams` (`id`) ON DELETE SET NULL ON UPDATE SET NULL
) ENGINE=InnoDB AUTO_INCREMENT=168 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
每当我做 bin/cake 烘焙时,它都会创建所有 类 但它不会创建关联。这是我的团队实体的一部分,它有 int $admin 而不是用户实体...
* @property int $id
* @property string $joiningID
* @property string $name
* @property int $admin
* @property \Cake\I18n\FrozenTime $created
* @property \Cake\I18n\FrozenTime $modified
我假设您想使用 bin\cake bake
生成模型、视图和控制器。
CakePHP 假定外键遵循以下约定:<singularized version of the table name>_id
。因此,在您的情况下,您应该将 team
外键重命名为 team_id
,并且应该正确检测到关系。
所以您的 user
实体将与 teams
table 有 belongsTo 关系。然后,CakePHP 会在您的实体中创建一个 team
变量,以 link 关联到 team
实体。
我有 2 个表,我想在它们之间创建关联,但是 bin/cake 做的不正确。
CREATE TABLE `teams` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`joiningID` varchar(20) COLLATE utf8_unicode_ci NOT NULL,
`name` varchar(45) COLLATE utf8_unicode_ci NOT NULL,
`admin` int(11) NOT NULL,
`created` datetime NOT NULL,
`modified` datetime NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `admin` (`admin`),
UNIQUE KEY `name` (`name`),
CONSTRAINT `fk_admin` FOREIGN KEY (`admin`) REFERENCES `users` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=34 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
用户:
CREATE TABLE `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
`email` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
`encrypted_password` varchar(80) COLLATE utf8_unicode_ci NOT NULL,
`salt` varchar(10) COLLATE utf8_unicode_ci NOT NULL,
`facebook_json` varchar(700) COLLATE utf8_unicode_ci DEFAULT NULL,
`created` datetime DEFAULT NULL,
`modified` datetime DEFAULT NULL,
`team` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `email` (`email`),
KEY `users_ibfk_1` (`team`),
CONSTRAINT `users_ibfk_1` FOREIGN KEY (`team`) REFERENCES `teams` (`id`) ON DELETE SET NULL ON UPDATE SET NULL
) ENGINE=InnoDB AUTO_INCREMENT=168 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
每当我做 bin/cake 烘焙时,它都会创建所有 类 但它不会创建关联。这是我的团队实体的一部分,它有 int $admin 而不是用户实体...
* @property int $id
* @property string $joiningID
* @property string $name
* @property int $admin
* @property \Cake\I18n\FrozenTime $created
* @property \Cake\I18n\FrozenTime $modified
我假设您想使用 bin\cake bake
生成模型、视图和控制器。
CakePHP 假定外键遵循以下约定:<singularized version of the table name>_id
。因此,在您的情况下,您应该将 team
外键重命名为 team_id
,并且应该正确检测到关系。
所以您的 user
实体将与 teams
table 有 belongsTo 关系。然后,CakePHP 会在您的实体中创建一个 team
变量,以 link 关联到 team
实体。