2011-11-23 65 views
1

這是我custome查詢:Symfony2 - 如何根據自定義查詢獲取實體對象?

$query = $em->createQuery("SELECT max(d.id) FROM MyBundle:DBTableEntity d "); 
$max_incoming_id = $query->execute(); 

我希望它返回的實體對象,就像下面這樣:

$EntityObj = $resource->getRepository("MyBundle:DBTableEntity")->findAll(); 

任何想法如何做到這一點?

+1

解決方案: $查詢= $資源 - > createQuery(「SELECT d FROM MyBundle:MyEntity d where d.id> 5); $ entities = $ query-> execute(); foreach($ entities = $ i => $ entity): //獲取實體ID $ entity-> getId(); endforeach; 就是這樣! – Edge

回答

1

像這樣的東西應該工作

$EntityObjects = $resource->getRepository('MyBundle:DBTableEntity') 
         ->createQuery() 
         ->orderBy('id', 'DESC') 
         ->getResult(); 

$EntityObject = array_pop($EntityObjects); 
+0

我找到了解決方案,其簡單的foreach循環: $ query = $ resource-> createQuery(「SELECT d FROM MyBundle:MyEntity d where d.id> 5); $ entities = $ query-> execute (); 的foreach($實體$ I => $實體): //獲取實體的ID $實體 - >的getId(); endforeach; 就是這樣 – Edge

+0

我只是跑你的代碼和!實現getRepository不包含任何CreateQuery()方法 – Edge

1

嘗試這個

$query = sprintf("SELECT s FROM BundleName:EntityClass s where s.field1 = %d and s.field2=%d", $field1, $field2); 
$em = $this->getDoctrine()->getEntityManager(); 
$queryObj = $em->createQuery($query); 
$entities = $queryObj->execute(); 
0

隨着EXCUTE您收到的結果(實體)的陣列。

所以你可以做$ entities = $ query.excute();

return $ entities [0]; //這是如果你有一個結果;

array_pop($實體)將行不通這給symfony的一個錯誤2.6

+0

格式?.... – tod

0

我想你會喜歡這種風格:

$EntityObj = $resource->getRepository("MyBundle:DBTableEntity") 
         ->findOneBy(array(), array('id' => 'DESC')); 

:)