Comment interroger une table avec une relation HABTM tout en fournissant des conditions supplémentaires dans CakePHP?
-
03-07-2019 - |
Question
Comment puis-je faire cela dans CakePHP:
J'utilise deux tables ( régions
et safaris
) ayant une relation plusieurs à plusieurs. Les tables sont jointes par une autre table appelée regions_safaris
(avec les champs id_région
et safari_id
). Je souhaite récupérer tous les safaris
répondant à des critères donnés, tels que des durées de 5 jours et dans une région donnée. Cela devrait être implémenté dans CakePHP
La solution
juma,
Veuillez ne pas poster plusieurs fois si rapidement.
Pour plus de références, veuillez consulter la relation Cakebook Has-And-Belongs-To-Many. C'est exactement ce que vous décrivez. Voir http://book.cakephp.org/view/83/hasAndBelongsToMany-HABTM
En résumé, si vous avez configuré correctement les modèles Cake (avec la relation HABTM établie entre les régions, les safaris et les régions_safaris; vérifiez l’index 'joinTable' sur le tableau var $ hasAndBelongsToMany, dans les modèles), vous le feriez :
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
}