スタッフがコースや集会に参加した合計時間の結果を得ることができるかどうかはわかりません。ここに私のデータベースがあります:-
staffs
+---+-------+-----------+
| id| Name | Department|
+---+-------+-----------+
| 1 | Joe | HR |
| 2 | Andra | Support |
| 3 | Khan | HR |
| 4 | Toll | HR |
| 5 | Gosh | Support |
| 6 | Rama | Support |
+---+-------+-----------+
attendances
+---+---------+-----------+--------------+
|id | name_id | course_id | assembly_id |
+---+---------+-----------+--------------+
| 1 | 1 | 101 | |
| 2 | 1 | 102 | |
| 3 | 1 | | 501 |
| 4 | 2 | 102 | |
| 5 | 3 | | 502 |
| 6 | 3 | 103 | |
| 7 | 4 | 101 | |
| 8 | 4 | | 501 |
| 9 | 4 | 102 | |
+---+---------+-----------+--------------+
courses
+-------+-----------+-------+
| id | name | hours |
+-------+-----------+-------+
| 101 | courses_1 | 8 |
| 102 | courses_2 | 6 |
| 103 | courses_3 | 9 |
+-------+-----------+-------+
assembly
+-------+---------------+-------+
| id | name | hours |
+-------+---------------+-------+
| 501 | assembly_1 | 2 |
| 502 | assembly_2 | 4 |
+-------+---------------+-------+
モデル>出席で、私はすでにリレーションを追加しています:-
public $belongsTo = array('Staff','Course','Assembly');
私のコントローラーでは、このコードを書いてみます:-
$view = $this->Staff->find('all',array(
'fields' => array('SUM(COALESCE(Course.hours,0))+SUM(COALESCE(Assembly.hours,0)) as ec_count'),'recursive'=>2));
$this->set('view', $view);
しかし、エラーが返されます..(ここで何か間違っているようです)
この条件でコードを記述する方法は、次のようなビューで表示されます:-
+---+-------+-----------+------------+
| id| Name | Attend | Total Hour |
+---+-------+-----------+------------+
| 1 | Joe | course_1 | 16 |
| | | course_2 | |
| | | assembly_1| |
| 2 | Andra | course_2 | 6 |
| 3 | Khan | assembly_2| 13 |
| | | course_3 | |
| 4 | Khan | course_1 | 16 |
| | | assembly_1| |
| | | course_2 | |
| 5 | Gosh | - | 0 |
| 6 | Rama | - | 0 |
+---+-------+-----------+------------+