Способ «торт» сделать это будет следующим:
$this->Classroom->find('first',array(
'conditions'=>array(
'Classroom.id'=>$classrom_id_var
),
'recursive'=>1
)
Используется стандартный рекурсивный флаг. Я настоятельно рекомендую подобный встроенный Containable поведенческий код, так что вы можете сделать следующее:
$classdata = $this->Classroom->find('first',array(
'conditions'=>array(
'Classroom.id'=>$classrom_id_var
),
'contain'=>array('Classroom')
)
Любой из них даст вам массив, подобный следующему:
array(
[Classroom] => array(
...teacher data...
),
[Teacher] => array(
[0] => array(
[id] => 4
....
),
[1] => array( ...teacher 2 data... ),
[2] => array( ...teacher 3 data... ),
)
)
Затем вы можете просто просмотреть массив учителей и убедиться, что рассматриваемый учитель находится в этом массиве.
Для этой последней задачи вы можете использовать полезную встроенную Set утилиту - вы можете сделать что-то следующим образом:
$teacherlist = Set::extract($classdata,'/Classroom/id');
if(in_array($teacherlist, $id)) {
//They're okay
} else {
//Return an error
}
Если вы действительно хотите написать это в функции модели, посмотрите на опции join в find - это намного проще, чем в bindModel. Или посмотрите на обитаемое поведение .
(отредактировано для переворачивания после перечитывания вопроса)