我有一个用户实体,它与实体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)