我正在使用Symfony3框架,我有用户实体和文件实体。我想在奏鸣管管理用户列表中显示用户上传的所有大小文件的总和。当我想让那个字段排序时,我得到错误:
`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`
我在User实体中有自定义函数,它正在计算文件的总和。它返回字符串。
我的问题是我可以以某种方式将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();`
答案 0 :(得分:0)
我不知道你的dql事情,但有关在Sonata Admin表视图中排序的一些事实。问题是,无论你在做什么"虚拟"还是在数据库操作的后台仍然进行排序操作。在你的模型中。如果只向模型添加方法,则datagrid无法在排序中涉及此方法/属性。
我的经验是,您无法按相应表格中没有实际可用的字段进行排序。即使您自己编写整个查询,如果单击排序按钮,也会触发一个完全的其他查询,忽略您的请求。
如果有人告诉我相反的话,我会很高兴......
另请参阅此问题https://github.com/sonata-project/SonataAdminBundle/issues/1077