我的问题很简单,但我无法找到答案。
当我执行如下查询时:
$query->select('t2.name as t2_name, t1.name as t1_name')
->from('table1 t1')
->leftJoin('t1.table2 t2')
->execute(array(), Doctrine_Core::HYDRATE_ARRAY);
Doctrine给我一个像:
这样的数组array(
[0] => array(
't1_name' => 'foo',
't2_name' => 'bar'
)
)
我期望在t1_name之前在数组中设置字段t2_name。
无论如何要保持这些选定字段在Doctrine中的顺序吗?
答案 0 :(得分:1)
Doctrine将自动包含主(根)表的关键字段,并自动将其作为任何查询中的第一列,几乎适用于所有水合类型。
由于table1是查询中的根表,因此它将其移动到开头以获得其自身的内部处理优势。
我发现这种行为有时令人讨厌并且有些不可预测,但通过创建定制水合物已经找到了很大的缓解。
我在代码中多次使用了good example of creating a key/value hydrator。
您可以执行类似操作,按照您想要的顺序重新排列字段。
我也发布了an explanation to a very similar question here这可能是有益的。