我有实体患者有一个领域
/**
*
* @ORM\OneToOne(targetEntity="Surgery\LoginBundle\Entity\User" , mappedBy="patient")
* @ORM\JoinColumn(name="user_id", referencedColumnName="id")
*/
protected $user;
我想从Patiens获取外键,所以我创建了该查询
$query = $em->createQuery('SELECT p.user_id FROM SurgeryPatientBundle:Patients p WHERE p.user =5 ');
我收到此错误
[Semantical Error] line 0, col 9 near 'user_id FROM': Error: Class Surgery\PatientBundle\Entity\Patients has no field or association named user_id '
我的问题是,我可以在没有创建JOIN的情况下进入该领域吗?
答案 0 :(得分:0)
p.user.id应该完成这项工作。
$query = $em->createQuery('SELECT p.user.id FROM SurgeryPatientBundle:Patients p WHERE p.user =5 ');
记住要考虑对象而不是数据库列名。我假设用户有一个getId()方法。
echo $query->getQuery()->getSQL(); // Handy for debugging
我怀疑你不会发现id非常有用。可能需要使用$ em-> createPartialReference()来获得可以在其他关系中使用的用户对象。
并确保你做的事情如下:
$query->getQuery()->getScalerResult();
答案 1 :(得分:0)
试试这个:
$query = $em->createQuery('SELECT u.id FROM SurgeryPatientBundle:Patients p JOIN p.user u WHERE p.user =5')
或
$patient = $em->getRepository('SurgeryPatientBundle:Patients')->findOneBy(array('user' => 5));
$user = $patient->getUser()->getId();
答案 2 :(得分:0)
试试这个:
public function getBaseExportQuery()
{
return $this->createQueryBuilder('p')
->getQuery()
->setHint(\Doctrine\ORM\Query::HINT_INCLUDE_META_COLUMNS, true)
->getArrayResult();
}