Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.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 带日期的Symfony2实体,计算每天的平均值_Php_Symfony_Doctrine Orm - Fatal编程技术网

Php 带日期的Symfony2实体,计算每天的平均值

Php 带日期的Symfony2实体,计算每天的平均值,php,symfony,doctrine-orm,Php,Symfony,Doctrine Orm,我有一个实体金额 与 还有更多的领域 我想计算每天的平均值 现在我为每天创建一个约会时间 $date=new \DateTime(); $yesterday = new \ DateTime(); $yesterday->modify("- 1 day"); $beforeYesterday = new \ DateTime(); $beforeYesterday->modify("- 2 days"); ... 我循环了所有

我有一个实体金额

还有更多的领域

我想计算每天的平均值

现在我为每天创建一个约会时间

    $date=new \DateTime();
    $yesterday = new \ DateTime();
    $yesterday->modify("- 1 day");
    $beforeYesterday = new \ DateTime();
    $beforeYesterday->modify("- 2 days");    
    ...
我循环了所有的数量

    $averageCounts=[];

    foreach ($amounts as $amount) {
        if($amount->getCreatedAt()->format("d.m.Y") == $date->format("d.m.Y") ){
            $averageCounts['today'] += $amount->getValue();                
        }

        if($amount->getCreatedAt()->format("d.m.Y") == $yesterday->format("d.m.Y") ){ 
           $averageCounts['yesterday'] += $amount->getValue(); 
        }

    }

    $averagePerDay = ($averageCounts['today'] + $averageCounts['yesterday']) / count($averageCount) ;

所以我不能继续这样下去,有人能给我指出一种计算每天平均值的优雅方法吗

我建议您使用
分组方式
,这样您将拥有下一个sql:

从表中选择平均值(t.value)、t.create\u at作为t分组依据(t.create\u at)

在存储库中,您可以在
dql
中进行翻译:

$q = $em->createQuery();
$dql = "select AVG(t.value), DAY(t.createdAt)
        cdate  from MyProject\Model\Table t WHERE t.type=:param GROUP BY cdate";

$q->setDql($dql)->setParameter('param', $param);

很高兴帮助你!祝你好运
其中t.type=:param
和在
$q->setDQL($dql)->setParameter('param',$param)
hm抱歉它似乎不起作用,我认为
按t.createdAt分组
需要格式化为
d.m.Y
,现在它返回一个包含18个条目的数组(所有金额的计数),而不是每天一个数组(3天)我想我必须使用内置的DAY()函数,但是当我使用
groupbyday(t.createdAt)
时,它会抛出错误'line 0,col78'DAY(t.createdAt)':错误:无法根据未定义的标识或结果变量进行分组。`做了一些修改,你能试试这个吗
$q = $em->createQuery();
$dql = "select AVG(t.value), DAY(t.createdAt)
        cdate  from MyProject\Model\Table t WHERE t.type=:param GROUP BY cdate";

$q->setDql($dql)->setParameter('param', $param);