Mat*_*can 2 doctrine associations query-builder doctrine-orm
我正在使用QueryBuilder在存储库中编写方法。我想where针对实体所拥有的关联进行声明,而无需加入实体。
通常,如果我使用常规sql,我会做类似
select * from entity where entity.assocId=5
Run Code Online (Sandbox Code Playgroud)
但是对于学说,我没有关联ID的字段,因为它被映射为该列上的实际实体。
所以我认为我需要这样做以实现相同的目的:
$qb->innerJoin(‘e.associatedEntity', ‘ae', Query\Expr\Join::ON);
$qb->andWhere($qb->expr()->eq(‘ae.id’, $id));
Run Code Online (Sandbox Code Playgroud)
这意味着我需要对join要过滤的每个实体执行“ a ”操作,即使只是ID看起来比操作要昂贵得多。
因此,有没有一种方法可以根据关联列中的值进行过滤而无需加入实体?
由于2.4教义提供了一种DQL函数调用IDENTITY(),用于返回的关联列中的FK值。我在此问题中找到了一个示例用法。
而且,您可以混合使用querybuilder和DQL,因此,事实证明,解决我的问题的方法非常简单。
$qb->andWhere($qb->expr()->eq('IDENTITY(ae.associatedEntity)', $id));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2482 次 |
| 最近记录: |