[Doctrine][Symfony] 单个注释请求中的多个连接(可能吗?)

[Doctrine][Symfony] Multiple Joins in a single annotation request (is it possible ?)

我正在开发一个 Symfony 项目 (V3.4),我正在使用现有的数据库(无法更改)。 为了与之交互,我使用了学说注释,工作做得很好! 我设法使用 JoinTable 和 JoinColumns 提交请求,但最后一件事我不知道如何处理...

我有以下 tables :

tables

我有来自 table A 的 ID,我正在尝试从 E table 获得诽谤。

有没有办法使用注释来做到这一点?现在我已经在 3 table 秒之间完成了,但我不知道如何做更多 :

@ORM\ManyToMany(targetEntity="")
 * @ORM\JoinTable(name="",joinColumns={@ORM\JoinColumn(
 name="",referencedColumnName="")}, inverseJoinColumns={@ORM\JoinColumn(
 name="",referencedColumnName="", unique=true)})

如果不可能,我愿意接受建议。

谢谢!

通过查看您的需求和架构,我可以告诉您您不需要多对多关系。您应该跨实体(tables)建立双向关系。

我不知道你现在是哪种关系,但假设是一对一的,你可以通过以下方式建立关系:

实体A

/**
 * @OneToOne(targetEntity="EntityB", mappedBy="entityA")
 */
private $entityB;

实体B

 /**
 * @OneToOne(targetEntity="EntityA", inversedBy="entityB")
 * @JoinColumn(name="entityA_id", referencedColumnName="id")
 */
private $entityA;
/**
 * @OneToOne(targetEntity="EntityC", mappedBy="entityB")
 */
private $entityC;

实体C

/**
 * @OneToOne(targetEntity="EntityB", inversedBy="entityC")
 * @JoinColumn(name="entityB_id", referencedColumnName="id")
 */
private $entityB;
/**
 * @OneToOne(targetEntity="EntityD", mappedBy="entityC")
 */
private $entityD;

实体D

 /**
 * @OneToOne(targetEntity="EntityC", inversedBy="entityD")
 * @JoinColumn(name="entityC_id", referencedColumnName="id")
 */
private $entityC;
/**
 * @OneToOne(targetEntity="EntityE", mappedBy="entityE")
 */
private $entityE;

实体E

 /**
 * @OneToOne(targetEntity="EntityD", inversedBy="entityE")
 * @JoinColumn(name="entityD_id", referencedColumnName="id")
 */
private $entityD;

我没有时间测试它。但它应该是直截了当的。

您可以通过以下方式从 E table 获取诽谤:

$entityA = $entityRepositoryForA->find(a_id_here);
$entityA->getEntityB()->getEntityC()->getEntityD()->getEntityE->getLibelle();