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)时,它会显示平均分数。因此代码可以工作,但它仍然会给我未定义的索引。:(我使用……就像你告诉我的那样。