0

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 句にプッシュしているようです...

私に何ができる?

4

1 に答える 1