私が抱えている問題を説明するために、例を使用します。学生が放課後のクラスに申し込むことができるシステムを構築しているとしましょう。しかし、それが有効であるためには、管理者が申し込みを承認する必要があります。だから私はこれらのモデルを持っています:
- カレンダー(「Teacher」、hasAndBelongsToMany「Student」に属します)
- 学生(hasAndBelongsToMany "Calendar")
- 先生(hasMany "Calendar")
ここで、9年生向けの未承認のサインアップすべてのリストを見たいとしましょう。リストにカレンダーの日付、生徒の名前、教師の名前を含めたいです。私はこのようなことをします:
$this->request->data = $this->Student->CalendarsStudent->find('all', array(
'conditions' => array(
'CalendarsStudent.is_approved' => null,
'Student.grade' => 9
)
));
上記のコードの問題は、返された配列に教師の名前がないことです。
Array
(
[0] => Array
(
[CalendarsStudent] => Array
(
[id] => 1274
[calendar_id] => 200
[student_id] => 872
[is_approved] =>
)
[Calendar] => Array
(
[id] => 200
[date] => 2012-12-17
[teacher_id] => 1
[total_slots] => 15
)
[Student] => Array
(
[id] => 872
[teacher_id] => 1
[first_name] => Billy
[last_name] => Smith
[grade] => 9
)
)
)
パラメータに追加'recursive' => 2
すると、find
情報が多すぎます。私が欲しいものですが、私が欲しくないものもあり$this->request->data[0]['Calendar']
ます。また、私が望まないサブアレイがあります。これは修正されるようですが、私もそれを機能させることができません。[Teacher]
[Student]
$this->request->data[0]['Student']
Containable
何か案は?