我注意到最近在 symfony 3.3 下我没有真正遇到过的行为。
如果我使用带有一些连接的查询构建器,在我返回的结果集中,我最终会在结果数组中的新行上找到每个表 - 例如,如果我将 t1 和 t2 连接到 t3 上,其中每个表都是一个学说实体,我会得到一个看起来有点像这样的结果:
$results[0] => (row1 entity for t3)
$results[1] => (row1 entity for t1)
$results[2] => (row1 entity for t2)
$results[3] => (row2 entity for t3)
$results[4] => (row2 entity for t1)
$results[5] => (row2 entity for t2)
这 3 个数组项对应于构成结果集的单个连接“行”的每个实体/“表”。
我发现 HYDRATE_SCALAR 给了我一个更传统的“标量”(duh ..没有震惊)结果,其中结果数组的每个元素都包含一个完整的标量行..但是我没有得到很好的水合实体对象与:(
我想知道,有没有什么方法可以在不编写我自己的辅助方法的情况下本地使用 symfony / 学说,我可以获得一个结果数组,其中每个元素对应于结果集中的一行?也许上面每个实体对象都有键?
或者,除此之外,人们通常如何使用它?迭代这样一个结果集并将上面示例中的每组 3 个数组元素作为一个“行”处理是否“安全”?即,将数组分成 3 个,还是一次迭代 3 个?
这种行为真的让我很惊讶,而且看起来很不直观。这里的任何关于这背后的想法的教育也可能会有所帮助。
此外,当我使用 HYDRATE_ARRAY 时,这似乎不会水合我定义的任何 OneToOne、OneToMany 或 ManyToOne 关系中的相关实体。我希望一个包含我的相关实体属性的多维数组.. 一厢情愿,或者这可以实现(同样没有额外的辅助方法)
谢谢大家!
*编辑 - 我的例子中的错误