在CakePHP中提供附加条件的同时,如何查询基于HABTM关系的表?

时间:2009-03-02 12:52:11

标签: cakephp

我如何在CakePHP中执行此操作: 我正在使用具有多对多关系的两个表(regionssafaris)。这些表由另一个名为regions_safaris的表(包含字段region_id& safari_id)连接在一起。我想获取满足给定条件的所有safaris,例如5天的持续时间和给定区域。这应该在CakePHP中实现

1 个答案:

答案 0 :(得分:2)

拒马河,

请拒绝多次发布。

有关详细参考,请参阅Cakebook Has-And-Belongs-To-Many关系。这正是你所描述的。见http://book.cakephp.org/view/83/hasAndBelongsToMany-HABTM

简而言之,假设你正确设置了Cake模型(在区域之间建立了HABTM关系,safaris和regions_safaris;检查var $ hasAndBelongsToMany数组中的'joinTable'索引,在模型中),你会这样做:

   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
   }