Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在Symfony中,如何从默认的findBy方法获取QueryBuilder?_Php_Symfony_Doctrine Orm_Doctrine - Fatal编程技术网

Php 在Symfony中,如何从默认的findBy方法获取QueryBuilder?

Php 在Symfony中,如何从默认的findBy方法获取QueryBuilder?,php,symfony,doctrine-orm,doctrine,Php,Symfony,Doctrine Orm,Doctrine,在symfony5中,使用条令,如何从默认的实体存储库方法(如findBy、findOneBy、findAll)获取QueryBuilder对象(而不是结果) 我需要QueryBuilder用于: 将其传递给KnpPaginator(特别需要QueryBuilder而不是结果) 将来可能会使用其他查询逻辑对其进行扩展 我可以只编写一个简单的查询(比如$em->createQuery(“从文章a中选择a”)),但我希望能够访问默认findBy方法提供的过滤和排序。我认为编写我自己的QueryBui

在symfony5中,使用条令,如何从默认的实体存储库方法(如findBy、findOneBy、findAll)获取QueryBuilder对象(而不是结果)

我需要QueryBuilder用于:

  • 将其传递给KnpPaginator(特别需要QueryBuilder而不是结果)
  • 将来可能会使用其他查询逻辑对其进行扩展
  • 我可以只编写一个简单的查询(比如
    $em->createQuery(“从文章a中选择a”)
    ),但我希望能够访问默认findBy方法提供的过滤和排序。我认为编写我自己的QueryBuilder并按任何属性进行过滤/排序将是一项艰巨的工作,即使我尝试过,我也不确定我是否能够很好地实现它

    编辑:尽管它不能准确回答我的问题,但我已经为我的第一个用例找到了解决方案(使用KnpPaginator而不编写自定义查询):。

    此方法允许在不更改任何查询的情况下将分页附加到任何查询,而不是通过QueryBuilder编写一个新的查询。

    我认为,如果您在源代码中查找findBy和相关方法,您会发现复制它非常简单。您还将看到底层查询生成器对象没有公开。我查看了源代码,发现那里没有QueryBuilder。那么这些方法是否根本不使用QueryBuilder,并且不可能从它们那里获取查询?我希望QueryBuilder可能在更深层次的某个地方使用,但我就是不知道如何获得它。好问题,如果可能的话,它确实是一个不错的功能。但我认为这确实是不可能的,因为这些方法中没有QueryBuilder。它与KnpPaginator不兼容。。。幸运的是,这些方法(findBy、findAll、find)不是最难自己编写的。您可以扩展EntityRepository MyEntityRepository并编写自己的方法(findAllQb、findByQb、findQb),然后改用它们