Symfony2如何从数据库中获取外键

时间:2013-01-11 16:41:56

标签: forms entity-framework symfony

我有实体患者有一个领域

/**
 *
 * @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的情况下进入该领域吗?

3 个答案:

答案 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();

}