Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.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
Symfony 是否有将dql传递给条令标准的方法_Symfony_Doctrine Orm_Criteria_Sonata Admin_Doctrine Query - Fatal编程技术网

Symfony 是否有将dql传递给条令标准的方法

Symfony 是否有将dql传递给条令标准的方法,symfony,doctrine-orm,criteria,sonata-admin,doctrine-query,Symfony,Doctrine Orm,Criteria,Sonata Admin,Doctrine Query,我使用的是Symfony3框架,我有用户实体和文件实体。我想在sonata管理用户列表中显示用户上传的所有大小文件的总和。当我想对该字段进行排序时,我得到一个错误: `Catchable Fatal Error: Argument 1 passed to Sonata\DoctrineORMAdminBundle\Datagrid\ProxyQuery::entityJoin() must be of the type array, null given, called in /home/mil

我使用的是Symfony3框架,我有用户实体和文件实体。我想在sonata管理用户列表中显示用户上传的所有大小文件的总和。当我想对该字段进行排序时,我得到一个错误:

`Catchable Fatal Error: Argument 1 passed to Sonata\DoctrineORMAdminBundle\Datagrid\ProxyQuery::entityJoin() must be of the type array, null given, called in /home/milos/sites/coinaphoto/vendor/sonata-project/doctrine-orm-admin-bundle/Datagrid/ProxyQuery.php on line 143 and defined`
我在用户实体中有一个自定义函数,用于计算文件总数。它返回字符串

我的问题是,我是否可以通过某种方式将dql传递给标准,以获得总和。或者你能建议一些其他的方法来实现这一点吗

`    public function getStoragge(){
         $criteria = Criteria::create()
            ->where(Criteria::expr()->someexpression...);
         $matches = $this->file->matching($criteria);
     }`
类似于需要聚合字段时的情况

`    $dql = "SELECT SUM(e.amount) AS balance FROM Bank\Entities\Entry e " .
     "WHERE e.account = ?1";
    $balance = $em->createQuery($dql)
              ->setParameter(1, $myAccountId)
              ->getSingleScalarResult();`

我不知道关于dql的事情,但是关于Sonata管理表视图中排序的一些事实。问题是,无论您在模型中执行什么“虚拟”操作,排序操作仍然可以在后台通过数据库操作进行。如果只向模型添加一个方法,datagrid将无法在排序中包含此方法/属性

我的经验是,您不能按相应表中物理上不可用的字段进行排序。即使您自己编写整个查询,如果单击排序按钮,也会触发另一个完整的查询,忽略您的请求

如果有人告诉我相反的情况,我会很高兴的


另请参见本期

我不知道您的dql问题,但了解有关Sonata管理表视图中排序的一些事实。问题是,无论您在模型中执行什么“虚拟”操作,排序操作仍然可以在后台通过数据库操作进行。如果只向模型添加一个方法,datagrid将无法在排序中包含此方法/属性

我的经验是,您不能按相应表中物理上不可用的字段进行排序。即使您自己编写整个查询,如果单击排序按钮,也会触发另一个完整的查询,忽略您的请求

如果有人告诉我相反的情况,我会很高兴的


另请参见此问题

是的,我看到了此问题,我只是想问是否有人找到解决方案或使用其他方法。我只是看到了重写排序行为的机会。。。我认为这只是非常深刻的核心内容(不是吗?)。。。不幸的是,直到现在我还没有找到一个方法。。。请告诉我是否有一个舒适的解决方案…是的,我看到了这个问题,我只是想问是否有人找到了解决方案或使用了其他方法。我只是看到了重写排序行为的机会。。。我认为这只是非常深刻的核心内容(不是吗?)。。。不幸的是,直到现在我还没有找到一个方法。。。请告诉我是否有一个舒适的解决方案。。。