Questo stralcio di codice è preso direttamente dal book di cakephp...
Codice PHP:
$this->User->find('all', array(
'contain'=>array(
'Profile',
'Account' => array(
'AccountSummary'
),
'Post' => array(
'PostAttachment' => array(
'fields' => array('id', 'name'),
'PostAttachmentHistory' => array(
'HistoryNotes' => array(
'fields' => array('id', 'note')
)
)
),
'Tag' => array(
'conditions' => array('Tag.name LIKE' => '%happy%')
)
)
)
));
Non fa altro che usare il Containable Behavior che premette di recuperare i dati che realmente ci interessano limitando le query da eseguire a differenza di recursive...
Il mio codice è praticamente simile solo che non recupera i dati dal Model Destination...
Codice PHP:
$order = $this->Order->find('first', array(
'contain' => array(
'User' => array(
'Destination' => array(
'fields' => array('id', 'contact')
),
'fields' => array('id', 'claim')
),
'Payment' => array('fields' => array('id', 'method'))
),
'conditions' => array('Order.id' => $id),
'fields' => array('id', 'items', 'products')
)
);
Idee sul perché?
Le relazioni sono
- Order belongsTo User hasOne Destination
- Order hasOne Payment