我的控制器$ id是外键
$query = $em->getRepository('SurgeryPatientBundle:Patients')->findPatientByUserID($id);
在我的存储库文件中有这个功能
public function findPatientByUserID($id)
{
return $this->getEntityManager()
->createQuery('SELECT p FROM SurgeryPatientBundle:Patients p WHERE p.user ='.$id.'')
->execute();
}
我想得到一个对象的实例,但仍然得到一个数组。使用find($ id)查询效果很好
编辑 问题解决了,我是如此愚蠢,我调用了$ query [0]
答案 0 :(得分:1)
您也可以使用$query->getSingleResult();
见这里
答案 1 :(得分:0)
如果要抓取对象,则不应使用DQL。 Doctrine实体有一个find函数可以为您处理这个问题。
您可以使用(在您的控制器中)代替所有代码:
$em->getRepository('SurgeryPatientBundle:Patients')->find($id);
DQL功能非常强大,但对于像这样的简单查找,使用内置的查找方法会更有效率和更高效率。提供实体作为教义对象。