php - Doctrine,如何左连接一个未生成的实体?

标签 php entity-framework symfony doctrine-orm doctrine

我有权利:

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;

更好的概述:enter image description here

所以我生成实体:

php apps/doctrine.php dev orm:generate-entities libs/ --no-backup --extend="\Doctrine\Entity\BaseEntity"

问题来了。 ProfileRights 实体被创建,而 Profile_rightsProfile_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/

相关文章:

php - 使用 MySQL 将 CURDATE() 转换为我的本地日期

php - 当我在bind_param上工作时,我正在用php的OOPs概念制作一个用于图像上传的函数,我不知道图像s或i

sql-server - MS SQL 自动递增非标识列

entity-framework - 相当于 Entity Framework Core 1 (EF7) 中的 .HasOptional

重启PC后Mysql表损坏

php - 如果 Doctrine 中不存在,并发请求试图创建相同的实体

doctrine - Symfony 2.7/3 - Doctrine : You have requested a non-existent service "fos_user.doctrine_registry"

来自用作 PHP 数组键值的 HTTP GET 数据的 PHP 注入(inject)

php - Symfony2 Doctrine 多对多双向保存表单类型

c# - 每个层次结构的表和复合主键