Doctrine查询生成器是否使用实体元数据中的关联设置



我有一个用户实体,它与实体License有多对一关联:

<entity name="...User" table="users" repository-class="...UserRepository">
<many-to-one field="license" target-entity="License" fetch="EAGER">
<join-column name="license_id" referenced-column-name="id" />
</many-to-one>
<field name="username" type="string" column="username" length="25" nullable="false"></field>
</entity>

我需要在DQL中使用条令查询生成器进行查询,如下所示

$qb = $em->createQueryBuilder();
$qb->select('user')
->from('...User', 'user')
->where(
$queryBuilder->expr()->andX(
$queryBuilder->expr()->eq('user.license.id', '1234'),
$queryBuilder->expr()->eq('user.username', 'test')
)
)

结果抛出

Type: DoctrineORMQueryQueryException
Message: [Semantical Error] Error: Class ...User has no field or association named license.id

为什么Doctrine不考虑元数据关联?我是不是错过了什么?

您可以将这两个表连接起来,然后根据许可证表中的id进行筛选:

$qb->select('user')
->from('...User', 'user')
->join('user.license', 'l')
->where('l.id = :var')
->setParameter('var', 1234)

最新更新