Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.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
Cakephp计算平均值问题_Php_Sql_Cakephp_Average - Fatal编程技术网

Cakephp计算平均值问题

Cakephp计算平均值问题,php,sql,cakephp,average,Php,Sql,Cakephp,Average,我有一个疑问: $this->set('grades', $this->Grade->Query(" SELECT AVG(grade), sections.section_name FROM grades, sections WHERE sections.id = grades.section_id AND grades.user_id =".$id." GROUP BY grades.section_id")); 我用它来输出数据: <?p

我有一个疑问:

   $this->set('grades', $this->Grade->Query("
SELECT AVG(grade), 
sections.section_name 

FROM grades, 
sections 

WHERE sections.id = grades.section_id 

AND grades.user_id =".$id." 

GROUP BY grades.section_id"));
我用它来输出数据:

<?php foreach($grades as $grade): ?>
    <tr>
        <td><?php echo $grade['Grade']['AVG(grade)']; ?></td>
    </tr>
<?php endforeach;?>
执行
选择AVG(grade)作为AVG_grade
这将作为
$grades['Grade']['avg_Grade']
执行
选择avg(Grade)作为avg_Grade
这将作为
$grades['Grade']['avg_Grade']
首先,执行
调试($grades)
以查看平均值存储在数组结构中的位置。您也可以在查询中将其命名为其他名称,例如
选择AVG(grade)作为average

作为补充说明,您不需要使用原始查询(可能是偏好问题,但如果可能的话,我倾向于避免使用它们)。你能行

$this->Grade->find(
  'all',
  array(
    'conditions' => array(
      'Grade.user_id' => $id
    ),
    'recursive' => 1,
    'fields'    => array( 
      'AVG( Grade.grade ) AS average',
      // +whatever else you need
    )
    'group' => 'Grade.section_id'
  )
);
在这种情况下,当您执行
foreach($grades as$grade)
时,平均值将位于
$grade[0]['average']
首先,执行
debug($grades)
以查看平均值存储在数组结构中的位置。您也可以在查询中将其命名为其他名称,例如
选择AVG(grade)作为average

作为补充说明,您不需要使用原始查询(可能是偏好问题,但如果可能的话,我倾向于避免使用它们)。你能行

$this->Grade->find(
  'all',
  array(
    'conditions' => array(
      'Grade.user_id' => $id
    ),
    'recursive' => 1,
    'fields'    => array( 
      'AVG( Grade.grade ) AS average',
      // +whatever else you need
    )
    'group' => 'Grade.section_id'
  )
);

在这种情况下,当您对每个($grades as$grade)执行
foreach时,
平均值将位于下面的
$grade[0]['average']
中,我在cakephp 3.5中的查询工作

//用户是我的表
//默认情况下,表中的用户评级为0,这就是为什么设置where子句>0

$query = $this->Users->find();

$ratingAverage = $query->select(['averageRating' => $query->func()->avg('user_rating')])
->where(['user_rating' => $userId,'provider_rating >' => 0])->group('user_rating')->first();

下面是我在cakephp 3.5中的查询工作

//用户是我的表
//默认情况下,表中的用户评级为0,这就是为什么设置where子句>0

$query = $this->Users->find();

$ratingAverage = $query->select(['averageRating' => $query->func()->avg('user_rating')])
->where(['user_rating' => $userId,'provider_rating >' => 0])->group('user_rating')->first();

Stil给我提供了“未找到索引级别”警告。是否有一个cakephp方法来执行相同的查询?它的
$Grade['Grade']
(s!)不是
$Grade['Grade']
!您看到的PHP变量是错误的!是的,你可以把整个变量打印出来,看看结构是什么
debug()
是CakePHP提供的最有用的函数。当我打印($grades)时,它会显示平均分数。所以代码可以工作,但它仍然给我未定义的索引:(我使用…就像你告诉我的。Stil给我索引等级未找到警告。是否有cakephp方法来执行相同的查询?它的
$grades['Grade']
(s!)不是
$Grade['Grade']
!你看的是错误的PHP变量!是的,你总是可以打印出整个变量来查看结构是什么。
debug()
是CakePHP提供的唯一最有用的函数。当我打印($grades)时,它会显示平均分数。因此代码可以工作,但它仍然会给我未定义的索引。:(我使用……就像你告诉我的那样。