Come posso interrogare una tabella basata sulla relazione HABTM fornendo al contempo condizioni aggiuntive in CakePHP?
-
03-07-2019 - |
Domanda
Come posso farlo in CakePHP:
Sto usando due tabelle ( regioni
e safari
) che hanno una relazione molti-a-molti. Le tabelle sono unite da un'altra tabella chiamata region_safaris
(con i campi region_id
& amp; safari_id
). Voglio recuperare tutti i safari
che soddisfano determinati criteri come durate di 5 giorni e in una determinata regione. Questo dovrebbe essere implementato in CakePHP
Soluzione
Juma,
Ti preghiamo di resistere a pubblicare più volte così rapidamente.
Per ulteriori riferimenti, consultare la relazione Has-And-Belongs-To-Many di Cakebook. È esattamente quello che stai descrivendo. Vedi http://book.cakephp.org/view/83/hasAndBelongsToMany-HABTM
In breve, supponendo che tu abbia configurato correttamente i modelli Cake (con la relazione HABTM stabilita tra regioni, safari e regioni_safaris; controlla l'indice 'joinTable' sull'array var $ hasAndBelongsToMany, nei modelli), lo faresti :
class SafariModel extends AppModel
{
var $name = 'Safari';
var $hasAndBelongsToMany = array( 'Tag'=>array( ..., 'joinTable'=>'regions_safaris', ... );
function findSafaris( $duration = 5, $region = null )
{
return $this->find('all', array('conditions'=>array('Region.region_name'=>$region, 'Safari.duration'=>$duration) );
}
... // rest of class
}