1

Cake 2.1 では、含まれているレコードからフィールドを合計する必要があります。

現在、子テーブルのすべてのレコードの合計を取得していますが、メイン テーブル (従業員) の ID でグループ化する必要があります。

出席は従業員に属します

    $agents = $this->Employee->find('all', array(
        'fields' => array('Employee.FullNameNoId'),
        'conditions' => $conditions,
        'contain' => array(
            'Attend' => array(
                'conditions' => array(
                    'Attend.as_date BETWEEN ? AND ?' => array(
                        date('Y-m-d', strtotime($this->passedArgs['date1'])), 
                        date('Y-m-d', strtotime($this->passedArgs['date2']))
                    )
                ),
                'fields' => array('sum(Attend.as_labormin) AS total'),
                //'group' => array('Attend.employee_id') // This gets sql errors below
            )
        )
     ));

SQLエラーとのいくつかの組み合わせを試しました:

'group' => array('Attend.employee.id') // Model "Attend" is not associated with model "Attend" 
                                      //Column not found: 1054 Unknown column                     
'group' => array('employee_id')        // Model "Attend" is not associated with model "employee_id"
                                      // Column not found: 1054 Unknown column 'Attend.group' in 'field list'

'group' => array('Employee.id')           //Column not found: 1054 Unknown column Attend.group' in 'field list'

テーブル間の関係は問題ありません。関連するレコードを取得できます。問題は、従業員 ID で合計を取得することです。

関連フィールドのCakephp SUMをチェックしましたが、SELECT SUMを使用するのは面倒なようで、必要なグループ化を省略しました。

手伝ってくれますか?

4

1 に答える 1

1

「autoFields」を無効にしてみてください。集計関数と「group by」ステートメントで SQL エラーが発生することが知られています。 詳細はこちら

于 2013-02-08T04:54:23.860 に答える