2011-11-23 140 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')); 

:)

相关问题