cakephp sum()在单场上

时间:2013-05-22 13:24:40

标签: cakephp

我已经搜索了如何获得一个名为积分的字段的高低。我只需要一个总数,但我能得到的最好的是Points表中的记录列表以及来自会员的相关记录。

    $totalPoints = $this->Member->Point->find('all', array(
               array('fields' => array('sum(Point.points)   AS Point.ctotal'))));

3 个答案:

答案 0 :(得分:13)

为什么不按文档记录和建议使用virtualField? http://book.cakephp.org/2.0/en/models/virtual-fields.html

$this->Member->Point->virtualFields['total'] = 'SUM(Point.points)';
$totalPoints = $this->Member->Point->find('all', array('fields' => array('total')));

这样更清洁。

另请注意您在$ options数组(...find('all', array(array(...)中获得的双数组。我如何只使用单个/平面阵列。 这就是你的SUM()调用字段不起作用的原因。

答案 1 :(得分:3)

上面的答案是正确的。我只想补充一点,你可以这样做:

$totalPoints = $this->Member->Point->find('first', array(
               array('fields' => array('sum(Point.points) AS Point__ctotal'))));

$totalPoints会有这个:

$totalPoints['Point']['ctotal']

答案 2 :(得分:0)

另一种不输出数组的简洁方法

$this->Member->Point->virtualFields = array('total' => 'SUM(Point.points)');
$total = $this->Member->Point->field('total');