2012-02-09 51 views
1

我使用的symfony 2.0.10建立一個網站,並在我的控制,我使用此代碼查詢數據庫表:指數由查詢生成器

$query = $this->getDoctrine()->getRepository('MyBundle:MyTable')->createQueryBuilder('x')->getQuery(); 

$data = $query->getResult(); 

我會得到結果的索引數組不是按序號(0到N),而是按指定的字段。我看到我可以在CreateQuery方法中指定一個INDEX BY,但我如何使用查詢生成器執行此操作?在this問題中給出了答覆,但用戶沒有使用存儲庫。

編輯1

$query = $this->getDoctrine()->getEntityManager()->createQueryBuilder()->select('x')->from('MyBundle:MyTable', 'x', 'x.myIndexField')->getQuery(); 

回答

1

我還沒有試過,但我敢肯定,方法join有簽名:

public function join($join, $alias, $conditionType = null, $condition = null, $indexBy = null) 

最後一個參數是$indexBy,所以我想那是什麼你正在尋找;)

+0

我不想在SQL查詢中加入一些東西,我只想得到結果作爲一個由fi索引的數組場。使用CreateQuery命令非常簡單,但使用QueryBuilder似乎更困難 – Stefano 2012-02-09 22:43:01

+0

看來它已在存儲庫中得到修復。看看這個問題報告: http://www.doctrine-project.org/jira/browse/DDC-1335 你可能想更新學說。 – 2012-02-09 22:53:30

+0

我正在使用symfony和存儲庫的原則,所以你可以看到我不使用表單方法。任何其他想法? – Stefano 2012-02-09 22:59:46