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') ->

我在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')
            ->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培训师从未告诉过我这种类型的研究。顺便说一句玩得高兴