我有权利:
CREATE TABLE `rights` (
`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`name` VARCHAR(255) NOT NULL DEFAULT '',
PRIMARY KEY (`id`),
UNIQUE INDEX `U_name` (`name`)
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB;
和个人资料:
CREATE TABLE `profile` (
`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`name` VARCHAR(255) NOT NULL DEFAULT '',
PRIMARY KEY (`id`),
UNIQUE INDEX `U_name` (`name`)
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB;
我想将个人资料
连接到权利
,并将个人资料连接到个人资料:
CREATE TABLE `profile_profile` (
`profile_id1` INT(10) UNSIGNED NOT NULL DEFAULT '0',
`profile_id2` INT(10) UNSIGNED NOT NULL DEFAULT '0',
PRIMARY KEY (`profile_id1`, `profile_id2`),
INDEX `I_profile_id2` (`profile_id2`),
CONSTRAINT `FK_profile_profile-profile-1` FOREIGN KEY (`profile_id1`) REFERENCES `profile` (`id`) ON UPDATE CASCADE ON DELETE CASCADE,
CONSTRAINT `FK_profile_profile-profile-2` FOREIGN KEY (`profile_id2`) REFERENCES `profile` (`id`) ON UPDATE CASCADE ON DELETE CASCADE
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB;
CREATE TABLE `profile_right` (
`profile_id` INT(10) UNSIGNED NOT NULL DEFAULT '0',
`right_id` INT(10) UNSIGNED NOT NULL DEFAULT '0',
PRIMARY KEY (`profile_id`, `right_id`),
INDEX `I_right_id` (`right_id`),
CONSTRAINT `FK_profile_right-profile` FOREIGN KEY (`profile_id`) REFERENCES `profile` (`id`) ON UPDATE CASCADE ON DELETE CASCADE,
CONSTRAINT `FK_profile_right-rights` FOREIGN KEY (`right_id`) REFERENCES `rights` (`id`) ON UPDATE CASCADE ON DELETE CASCADE
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB;
所以我生成实体:
php apps/doctrine.php dev orm:generate-entities libs/ --no-backup --extend="\Doctrine\Entity\BaseEntity"
问题来了。 Profile
和 Rights
实体被创建,而 Profile_rights
和 Profile_profile
则没有。那么如何使用它们呢?
最佳答案
在 Doctrine 中,连接表不由实体表示。
您可以在实体中找到 @ORM\ManyToMany
,其中包含 @ORM\JoinTable
以及有关关联的所有信息。
这是连接表的表示,使用 @Richard 所说的 getter 和 setter 来访问它们。
在 Associations mapping 中获取更多信息(查看所有类型的关联)和 Working with associations (了解如何使用它们)文档的章节。
希望您对 Doctrine 有良好的体验。
编辑
仔细查看你的 UML 后,至少你的一个关联不需要多对多(如第一个答案所述),但是如果它们确实在 SQL 中有连接表,并且你通过以下方式导入它们逆向工程,它们肯定会与 SQL 中的完全相同(带有连接表的多对多)。
关于php - Doctrine,如何左连接一个未生成的实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35687396/