講師はモジュールを教え、一部はモジュールの主催者です。ここでは、講師が教えるモジュールを取得しています。
array(
(int) 0 => array(
'organiser' => '1',
'module_id' => '2',
'lecturer_id' => '1',
'Module' => array(
'code' => 'MOD2',
'name' => 'Z Name'
)
),
(int) 1 => array(
'organiser' => '1',
'module_id' => '1',
'lecturer_id' => '1',
'Module' => array(
'code' => 'MOD1',
'name' => 'Module Name'
)
)
)
モジュール名で並べ替えるにはどうすればよいですか? 結合テーブル (オーガナイザーなど) に追加のデータが必要なため、hasMany スルー リレーションシップを使用しました。以下は、講師のデータをプロファイルに含めるために使用する方法です。コメントアウトされた行は機能しません。
public function get($id = null) {
$this->contain(
array(
'User',
'County.name',
'School' => array(
'fields' => array('code', 'name')
),
'ModuleStaff' => array(
'fields' => array('organiser'),
'Module' => array(
'fields' => array('code', 'name'),
),
// 'order' => 'Module.name',
)
)
);
return $this->findByUserId($id);
}
ModuleStaff 結合クラスの関係は次のとおりです
public $belongsTo = array(
'Lecturer' => array(
'className' => 'Lecturer',
'foreignKey' => 'lecturer_id',
'conditions' => '',
'fields' => '',
'order' => ''
),
'Module' => array(
'className' => 'Module',
'foreignKey' => 'module_id',
'conditions' => '',
'fields' => '',
'order' => ''
)
);
各 ModuleStaff は 1 つのモジュールにしかリンクしないため、Module の順序値に名前を追加しても機能しません。実際の ModuleStaff オブジェクトを子クラス内の値で並べ替える必要があります。