Use MySQL’s SUM function with CakePHP find()

Saw this on IRC earlier, thought I’d blog it as it’s pretty useful info.

Add this method to your AppModel:

public function sum($field='total')
{	
	$data = $this->find('first', array(
		'conditions'=>$conditions,
		'fields'=>array('SUM('.$field.') AS summed'),
		'contain'=>array()
	));
	return $data[0]['summed'];
}

Then call it like so:

$total = $this->Model->sum('cost');

Hope this is useful for someone.