Для тех, у кого есть подобные проблемы, но в отношениях а-ля $ принадлежит, чтобы иметь правильный порядок, вы должны установить его правильно.
Например, когда у вас есть такой код:
var $belongsTo = array(
'Vacancy',
'Applicant' => array(
'className' => 'Person',
),
'Recruiter' => array(
'className' => 'Person',
),
'Company' => array(
'conditions' => array('Company.id = Vacancy.company_id'),
),
);
Но в результате, всегда получая результаты, когда Vacancy всегда присоединяется последним, вам следует сделать простую вещь: добавить модель "Vacancy" не как значение массива, а как значение ключа =>, как и другие:
var $belongsTo = array(
'Vacancy' => array(), // Just add empty array here -- all magic is here :)
'Applicant' => array(
'className' => 'Person',
),
'Recruiter' => array(
'className' => 'Person',
),
'Company' => array(
'conditions' => array('Company.id = Vacancy.company_id'),
),
);
Теперь все будет в прямом порядке: вакансии, соискатель, рекрутер и только потом компания.