2011-09-06 36 views
1

我的問題很簡單,但我找不到答案。保持選定的字段順序在HYDRATE_ARRAY在學說1.2

當我執行一個查詢,如:

$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); 

主義返回我像一個數組:

array(
[0] => array(
't1_name' => 'foo', 
't2_name' => 'bar' 
) 
) 

我在哪裏有望獲得現場t2_name到t1_name之前在陣列中進行設置。

無論如何要保持這些選定領域的秩序在學說?

回答

1

原則將自動包括主要(根)表的關鍵字段,並自動將其作爲任何查詢中的第一列,幾乎在所有水合類型中。

由於table1是查詢中的根表,因此它將其移至開頭以實現其自身的內部處理優勢。

我發現這種行爲令人討厭,有時也有點不可預知,但通過創建自定義水化器已經找到了很大的解脫。

有一個good example of creating a key/value hydrator我在我們的代碼中使用過很多次。

你可以做類似的事情,按照你想要的順序重新排列字段。

此外,我發佈了an explanation to a very similar question here這可能是有益的。