User エンティティが 1 つと、外部キーを介して User にリンクする UserData エンティティが 1 つあります。
User エンティティには、次のマッピングがあります。
/**
* @ORM\OneToOne(targetEntity="UserData", cascade={"persist", "remove"})
* @var integer
*/
protected $userData;
UserData には単純な ID フィールドがあります。
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
* @var integer
*/
protected $id;
Ok; UserData のフィールド「NIN」値が「A00000000」である User エンティティを 1 つ取得したいと考えています。私はこのDQLクエリを使用しようとしています:
SELECT u FROM eCommerceUserBundle:User u JOIN eCommerceUserBundle:UserData ud ON u.userData = ud.id WHERE ud.NIN = :NIN
しかし、私はこのエラーが発生します:
Doctrine\ORM\Query\Lexer::T_WITH が必要で、「ON」になりました
だから...私は次のようにON句をやめようとします:
SELECT u FROM eCommerceUserBundle:User u JOIN eCommerceUserBundle:UserData ud WHERE ud.NIN = :NIN
問題は、Doctrine が作成している生のクエリです。
SELECT
u0_.id AS id0,
u0_.email AS email1,
u0_.password AS password2,
u0_.created AS created3,
u0_.lastLogin AS lastLogin4,
u0_.confirmed AS confirmed5,
u0_.blocked AS blocked6,
u0_.particularData_id AS particularData_id7,
u0_.institutionalData_id AS institutionalData_id8,
u0_.administratorData_id AS administratorData_id9
FROM
user u0_
INNER JOIN userData u1_ ON (u1_.NIN = ?)
したがって、Doctrine は私の WHERE 句を ON 句にプッシュしているようです...
私に何ができる?