0

我有一个字段的实体患者

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

4

3 回答 3

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();
于 2013-01-11T16:54:30.607 回答
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();
于 2013-01-11T21:31:17.453 回答
0

试试这个:

public function getBaseExportQuery()
{
  return $this->createQueryBuilder('p')
              ->getQuery()
              ->setHint(\Doctrine\ORM\Query::HINT_INCLUDE_META_COLUMNS, true)
              ->getArrayResult();

}
于 2015-10-12T11:35:40.563 回答