0

我有两个实体,具有“逻辑”1:1 关系,但是没有配置(它们不知道它们彼此相关)。

我不能只配置这种关系,因为根据这种情况有很多旧代码(请参阅下面的进一步说明)。

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

SELECT E1 as my_cool_entity_1, E2 as my_cool_entity_2
FROM Namespace\Of\Entity1 E1
LEFT JOIN Namespace\Of\Entity2 E2
WITH E2.someColumn = E1.someOtherColumn

在我的例子中,只有一行匹配E1和一行匹配 join on E2。不知何故,我之前以这种方式使用过 Doctrine,但我不记得在哪里以及如何使用。预期的结果是这样的数组:

[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)
]]

怎么可能让 Doctrine 像我期望的那样为阵列补水?提前致谢!

注意:我写道我无法定义这两个实体之间的关系。那是因为,如果定义了关系,Doctrine 要求您在保存 E1 时分配 to 的实例——然而,在我的旧代码中,我只分配相关的ID。因此,Doctrine 将完全忽略并导致约束错误。E2E1E2

4

1 回答 1

1

如果没有关系学说的定义,就无法知道它是 oneToOne 关系,因此结果将始终是一个集合。您需要编写自己的 hydrator 来实现这一点。

于 2012-10-22T22:17:15.223 回答