单个字段上的cakephp sum()

单个字段上的cakephp sum(),cakephp,Cakephp,我在如何获得一个名为points的字段的总数上到处寻找。我只需要一个总的数字,但我能得到的最好的是一个记录列表从积分表与相关记录的成员 $totalPoints = $this->Member->Point->find('all', array( array('fields' => array('sum(Point.points) AS Point.ctotal')))); 为什么不使用文档记录和建议的virtualFields

我在如何获得一个名为points的字段的总数上到处寻找。我只需要一个总的数字,但我能得到的最好的是一个记录列表从积分表与相关记录的成员

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

为什么不使用文档记录和建议的virtualFields?

这样更干净

还要注意$options数组(
…find('all',array(…
)中的双数组,以及我如何仅使用单/平面数组。
这就是为什么SUM()作为字段调用不起作用的原因。

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

$totalPoints = $this->Member->Point->find('first', array(
               array('fields' => array('sum(Point.points) AS Point__ctotal'))));
$totalPoints
将具有以下功能:

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

另一种不输出数组的干净方法

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

你得到了什么错误?以及什么cakephp版本?你应该经常提到你正在使用的版本。我完善了答案。谢谢。谢谢你的帮助。我现在对virtualFields有了更好的理解。再多说一点,我认为在某些情况下可能会起作用-但这不是虚拟字段真正应该设置的方式。我会选择d文档化版本。对于回复,当我使用上述代码时,我必须在视图中使用$ReceidedTotal[0][0]['Point\uu ReceidedTotal']。作为另一个示例,我使用$ReceidedTotal[0]['Point']['Point\uu ReceidedTotal']是否缺少某些内容?我希望您的解决方案使用$totalPoints['Point']['ctotal']因为它更容易在视图中阅读。它为我工作,因为它允许我在飞行中设置条件
$this->Member->Point->virtualFields = array('total' => 'SUM(Point.points)');
$total = $this->Member->Point->field('total');