无论如何,可以将dql传递给教义标准



我正在使用Symfony3框架,我有用户实体和文件实体。我想在Sonata管理用户列表中显示用户上传的所有大小文件的总和。当我想使该字段可排序时,出现错误:

`Catchable Fatal Error: Argument 1 passed to SonataDoctrineORMAdminBundleDatagridProxyQuery::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 BankEntitiesEntry e " .
     "WHERE e.account = ?1";
    $balance = $em->createQuery($dql)
              ->setParameter(1, $myAccountId)
              ->getSingleScalarResult();`

我不知道你的 dql 事情,但关于在 Sonata 管理表视图中排序的一些事实。问题是,无论您在模型中"虚拟"做什么,排序操作仍然在后台使用数据库操作进行。如果仅向模型添加方法,则 datagrid 无法在排序中涉及此方法/属性。

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

如果有人告诉我相反的话,我会很高兴......

另请参阅此问题 https://github.com/sonata-project/SonataAdminBundle/issues/1077

相关内容

  • 没有找到相关文章

最新更新