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

これを試して:

$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 に答える
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 に答える