私が抱えている問題を説明するために、例を使用します。学生が1つ以上の放課後コースに申し込むことができるシステムを構築しているとしましょう。しかし、それが有効であるためには、学校関係者が申し込みを承認する必要があります。だから私はこれらのモデルを持っています:
- コース(「Teacher」に属し、hasAndBelongsToMany「Student」)
- 学生(hasAndBelongsToMany「コース」)
- 先生(hasMany "Course")
ここで、9年生向けの未承認のサインアップすべてのリストを見たいとしましょう。簡単だ:
$this->request->data = $this->Student->CoursesStudent->find('all', array(
'conditions' => array(
'CoursesStudent.is_approved' => null,
'Student.grade' => 9
)
));
私が苦労しているのは、教師のデータ(IDだけではない)も取得することです。私はこれを試しました:
$this->request->data = $this->Student->CoursesStudent->find('all', array(
'conditions' => array(
'CoursesStudent.is_approved' => null,
'Student.grade' => 9
),
'contain' => array(
'CoursesStudent',
'Course' => array(
'Teacher' => array(
'fields' => array(
'Teacher.id',
'Teacher.name'
)
)
),
'Student'
)
));
ただし、返される配列には何の影響もありません。これを既存のCakePHPプロジェクトに簡単に投入して操作できるようにするために、データベーススキーマとデータを次に示し、既存のCakePHPプロジェクトのランダムアクションに貼り付けることができるものを示します。これは私が取得しようとしているものです(教師のデータがそこにあることに注意してください):
Array
(
[0] => Array
(
[CoursesStudent] => Array
(
[id] => 1
[course_id] => 1
[student_id] => 1
[is_approved] =>
[created] => 2012-12-11 00:00:00
[modified] => 2012-12-11 00:00:00
)
[Course] => Array
(
[id] => 1
[teacher_id] => 1
[title] => Introduction to Improvisation
[start_date] => 2012-12-17
[end_date] => 2012-12-21
[created] => 2012-12-11 00:00:00
[modified] => 2012-12-11 00:00:00
[Teacher] => Array
(
[id] => 1
[first_name] => John
[last_name] => Doe
[created] => 2012-12-11 00:00:00
[modified] => 2012-12-11 00:00:00
)
)
[Student] => Array
(
[id] => 1
[first_name] => Bill
[last_name] => Brown
[grade] => 9
[created] => 2012-12-11 00:00:00
[modified] => 2012-12-11 00:00:00
)
)
)
ありがとう!