Yor*_*per 10 php doctrine doctrine-query doctrine-orm
我试图在学说中做一个简单的查询但是很挣扎.
$query->select(array(
    'app_title' => 'u.title',
    'user_name' => 'u.user_name',
    'first_used' => 'MIN(u.creation_time)',
    'last_used' => 'MAX(u.stop_time)',
    'total_usage' => 'SUM(u.stream_seconds)',
))
->from(self::USAGE_TABLE, 'u')
->orderBy('total_usage', 'DESC');
Run Code Online (Sandbox Code Playgroud)
显然我得到一个关于列名不知道的错误,因为Doctrine正在使用它自己的别名(sclr4).
但是,如果我尝试按实际价值排序; SUM(u.stream_seconds),然后我在order by子句中得到一个意外的括号,我很确定SQL不支持这个.
所以,我只是试图将数据放在一个表中并处理列的排序.这看起来很简单,我该怎么做?有任何想法吗?
Ath*_*lan 22
AS.MIN(),MAX(),AVG(),你必须使用GROUP BY.尝试simmilar到这个,这对我来说很完美(BTW而不是select方法中的关联数组):
$q = $this->em()->createQueryBuilder();
$q->select(['product.id', 'product.title'])
  ->addSelect('SUM(product.price) AS HIDDEN stat_sum_realised')
  ->from('ModuleAdmin\Entity\ProductEntity', 'product')
  ->groupBy('product.id');
$q->orderBy('stat_sum_realised', 'DESC');
Run Code Online (Sandbox Code Playgroud)
这里详细介绍了聚合函数(对于MySQL的例子):http: //dev.mysql.com/doc/refman/5.0/en/group-by-functions.html
从Doctrine ORM 2.3开始,您也可以使用HIDDEN关键字,这将避免(在这种情况下)stat_sum_realised被水合成结果集.
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           13488 次  |  
        
|   最近记录:  |