Symfony 如何根据条令中的标识在存储库中搜索?
我在Symfony应用程序中有一些表格Symfony 如何根据条令中的标识在存储库中搜索?,symfony,doctrine-orm,Symfony,Doctrine Orm,我在Symfony应用程序中有一些表格 id user_id test_id type_id points 我需要按不同的对进行搜索:用户id和测试id,用户id和类型id,测试id和类型id。 我可以在存储库中编写方法,所有对都可以这样编写: $hints = $this->createQueryBuilder('points') ->andWhere('IDENTITY(points.user) = :user_id') ->
id
user_id
test_id
type_id
points
我需要按不同的对进行搜索:用户id和测试id,用户id和类型id,测试id和类型id。
我可以在存储库中编写方法,所有对都可以这样编写:
$hints = $this->createQueryBuilder('points')
->andWhere('IDENTITY(points.user) = :user_id')
->andWhere('IDENTITY(points.test) = :test_id')
->setParameters([
'user_id' => $user->getId(),
'test_id' => $test->getId(),
])
->getQuery()
->getResult();
但我不想每次在存储库中添加新函数以进行新组合,并通过标准方法执行搜索,如$repository->findBy(['IDENTITY(points.user)=>1])
或$repository->matching($creteria)
。
但通过这种方式,我得到了错误无法识别的字段:IDENTITY(points.user)
如何通过具有标识的标准函数进行搜索?正如Skyd在评论中所说,它可以通过
$pointsRep->findBy(['user'=>1])执行代码>或通过$pointsRep->findBy(['user'=>$user])代码>你犯那种错误是正常的IDENTITY(points.user)
不是您实体的一个字段您是否尝试过(['user'=>yourUserEntity,'test'=>yourTestEntity])
?@Skyd我尝试过这种方法,而且效果很好!id类似于$pointsRep->findBy(['user'=>1])代码>和实体$pointsRep->findBy(['user'=>$user])代码>。谢谢现在我真的不明白为什么身份关键字是存在的,如果我们可以用这种方法搜索。完美!就个人而言,我不知道身份关键字。^^'我一直使用这种方法进行这种标准搜索。SensioLabs培训师从未告诉过我这种类型的研究。顺便说一句玩得高兴