在不同实体之间连接而没有定义的关系,从而导致使用Doctrine2引起意外结果



我有两个实体,具有"逻辑" 1:1的关系,但是没有配置(他们不知道它们彼此相关)。/p>

我不能仅仅配置这种关系,因为有很多旧代码,具体取决于这种情况(请参阅下文)。

现在,我正在尝试使用LEFT JOIN子句使用简单的SELECT查询手动解决此关系:

SELECT E1 as my_cool_entity_1, E2 as my_cool_entity_2
FROM NamespaceOfEntity1 E1
LEFT JOIN NamespaceOfEntity2 E2
WITH E2.someColumn = E1.someOtherColumn

在我的情况下,恰好有一排匹配E1和一排匹配E2上的联接。不知何故,我已经以这种方式使用了学说,但是我不记得在哪里以及如何。预期的结果是这样的数组:

[0 => [
    "my_cool_entity_1" => (Instance of E1),
    "my_cool_entity_2" => (Instance of E2)
]]

相反,阵列看起来像这样:

[0 => [
        "my_cool_entity_1" => (Instance of E1)
    ], 
 1 => [
        "my_cool_entity_2" => (Instance of E2)
]]

如何使学说可以像我期望的那样将阵列补充水分?预先感谢!

注意:我写道我无法定义这两个实体之间的关系。这是因为,如果定义了关系,则教义要求您在保存E1时将E2实例分配给E1 - 但是,在我的较旧代码中,我只分配了相关的 ID。因此,学说将完全忽略E2并导致限制错误。

没有关系学说的定义,无法知道它是一个OneToone关系,因此结果将始终是一个集合。您需要编写自己的水力程序才能实现这一目标。

相关内容

  • 没有找到相关文章

最新更新