2

ポイントと呼ばれるフィールドの合計を取得する方法について、高低を検索しました。合計の数値が 1 つだけ必要ですが、取得できる最善の方法は、ポイント テーブルのレコードと、メンバーの関連レコードのリストです。

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

3 に答える 3

13

ドキュメントで文書化および提案されているように、virtualFields を使用しないのはなぜですか? 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 配列 ( ) で取得した double 配列にも注意してください...find('all', array(array(...。そして、単一/フラット配列のみをどのように使用したか。これが、フィールドとしての SUM() 呼び出しが機能しない理由です。

于 2013-05-22T13:54:18.400 に答える
3

上記のマークの答えは正しいです。これを行うことができることを追加したいだけです:

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

$totalPointsこれがあります:

$totalPoints['Point']['ctotal']
于 2013-05-22T14:28:26.500 に答える