- , Containable contain Model::find. Model::find :
A; B, A; C, B; D, C; , E, D, E .
D, C, B, A. SQL, , contain .
CakePHP , , hasOne A E. , , . - (: untested):
$this->bindModel(array('hasOne'=>array(
'B'=>array(
'foreignKey' => false,
'conditions' => array('A.id = B.a_id')
),
'C'=>array(
'foreignKey' => false,
'conditions' => array('B.id = C.b_id')
),
'D'=>array(
'foreignKey' => false,
'conditions' => array('C.id = D.c_id')
),
'E'=>array(
'foreignKey' => false,
'conditions' => array('D.id = E.d_id')
)
)));
$this->find('all', array(
'conditions' => array( 'E.my_field' => $some_value )
));
E.my_value Model::find Set::extract :
$results = $this->find('all', array(
'contain' => array(
'B' => array(
'C' => array(
'D' => array(
'E' => array()
)
)
)
)
));
return Set::extract("/A/B/C/D/E[my_field={$some_value}]/../../../../", $results);
Set::extract, , .
EDIT. , Set::extract, . PHP.