2013-08-02 72 views
0

從閱讀文檔和另一個stackoverflow後,我認爲如果我只想返回幾列數據,正確的方法在教條是使用部分。 (這是一個只讀查詢)。Symfony2 Doctrine2使用部分

但是,下面的代碼返回所有100列,而不是我確定的3。有人能解釋爲什麼嗎?

感謝, MANISHA

public function showAction(Request $request) 
{ 
    if ($request->getMethod() == 'GET') { 
     $id = $request->get('locationid'); 
     $kfType = $request->get('type'); 
     $em = $this->getDoctrine() 
        ->getManager(); 

     $data = $em->createQueryBuilder() 
        ->select (array('partial d.{id, locationid, kfFyp}')) 
        ->from('DashDataBundle:Data', 'd') 
        ->where('d.locationid = :locationid') 
        ->setParameter('locationid', $id) 
        ->setMaxResults(100) 
        ->getQuery() 
        ->getResult(); 
    } 

回答

0

這個查詢將返回其擁有衆多領域的學說實體。但是,然後你使用partial關鍵字這個字段將是空的。只有指定的字段纔會填充數據。

如果你不想要來滋潤你可以簡單的數組中獲取數據的對象,如果你指定它

->getResult(\Doctrine\ORM\Query::HYDRATE_ARRAY) 
+0

謝謝!這使它像我希望的那樣工作,只顯示了我在返回的數組中要求的字段而不是整個對象。 – manisha

+0

因爲我沒有使用整個對象,我應該用QueryBuilder嗎?最好只使用DQL? – manisha

+0

沒有太大的區別。可能純粹的dql快一點。它只是建立查詢,沒有別的 –