任何人都可以解释以下doctrine架构验证错误消息:
以下是manyToMany关系中每个实体的yaml ORM定义,与documentation的第5.9节内联创建.
Rep\Bundle\ProjectBundle\Entity\User: type: entity table: User fields: id: id: true type: integer unsigned: true nullable: false generator: strategy: AUTO username: type: string length: 25 fixed: false nullable: false salt: type: string length: 32 fixed: false nullable: false password: type: string length: 40 fixed: false nullable: false email: type: string length: 60 fixed: false nullable: false manyToMany: roles: targetEntity: UserRole inversedBy: users joinTable: name: UserRoleLookup joinColumns: user_id: referencedColumnName: id inverseJoinColumns: user_role_id: referencedColumnName: id lifecycleCallbacks: { }
和UserRole逆yaml配置:
Rep\Bundle\ProjectBundle\Entity\UserRole: type: entity table: UserRole fields: id: id: true type: integer unsigned: true nullable: false generator: strategy: AUTO name: type: string length: 50 fixed: false nullable: false manyToMany: users: targetEntity: User mappedBy: roles lifecycleCallbacks: { }
这是User表架构:
CREATE TABLE `User` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT,`username` varchar(25) COLLATE utf8_unicode_ci NOT NULL,`salt` varchar(32) COLLATE utf8_unicode_ci NOT NULL,`password` varchar(40) COLLATE utf8_unicode_ci NOT NULL,`email` varchar(60) COLLATE utf8_unicode_ci NOT NULL,PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
UserRole表架构:
CREATE TABLE `UserRole` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT,`name` varchar(50) COLLATE utf8_unicode_ci NOT NULL,PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
和UserRoleLookup架构:
CREATE TABLE `UserRoleLookup` ( `user_id` int(11) unsigned NOT NULL,`user_role_id` int(11) unsigned NOT NULL,PRIMARY KEY (`user_id`,`user_role_id`),KEY `user_role_id` (`user_role_id`),CONSTRAINT `userrolelookup_ibfk_2` FOREIGN KEY (`user_role_id`) REFERENCES `userrole` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,CONSTRAINT `userrolelookup_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
正如您所看到的,这是一个非常简单的设置,带有一个查找表来指定用户的角色或给定用户角色中的用户集.但是,我收到了这个令人沮丧的同步错误.我在这里或网上都没有读到任何简洁细节回答这个问题的内容,我希望有人可以澄清我是否可以安全地离开这个配置并忽略这个错误?