我从条件数据库中获取了一个Rate信息列表。但是,如果日期范围中包含日期,我希望添加另一个最小停留条件,并且另一个表格称为最小停留时间。如果日期在我通过的日期范围内,那么费率表已经有一分钟的停留时间,但在某些日期我想过度使用。
我是cakephp的新手,所以我不确定如何检查minStay表中日期范围内的日期。然后获取最大的minStay并将其添加到条件中。
Rate表中的默认minStay为1
这是minStay表中的数据:
日期:31-10-2011 rateID:21 minStay:2 日期:2011年11月1日rateID:21 minStay:3
结果:如果日期范围是31-10-2011到2-11-2011 / 2晚,那么没有结果。如果3晚或以上,那么结果。
我希望我能正确解释。
包含日期范围的变量是$ todays
$conditions = array(
'Rate.enabled'=>1,'Rate.is_corporate'=>$is_corporate, 'Rate.minimum_stay <='=>$days,
'Rate.valid_from < '=>$date_start,'Rate.valid_to >'=>$date_end,
'OR'=>array('Rate.maximum_stay'=>0,'Rate.maximum_stay >='=>$days)
);
$order = 'Rate.list_no';
$this->Rate->contain('Room.id','Room.title','Room.max_adults','Room.max_children');
$rates = $this->Rate->find('all',array('conditions'=>$conditions,'order'=>$order));
答案 0 :(得分:1)
我想我明白你想做什么,如果没有请发表评论。
要做到这一点你需要做这样的事情(假设你有像许多MinStay那样)
$conditions = array(
'Rate.enabled'=>1,'Rate.is_corporate'=>$is_corporate, 'Rate.minimum_stay <='=>$days,
'Rate.valid_from < '=>$date_start,'Rate.valid_to >'=>$date_end,
'OR'=>array('Rate.maximum_stay'=>0,'Rate.maximum_stay >='=>$days),
'AND' => array('OR'=> array('minStay.date BETWEEN ? AND ?' => array($date_start,$date_end)),
'minStay.minimum_stay <' =>$days )
);
$order = 'Rate.list_no';
$fields = array ('Room.id','Room.title','Room.max_adults','Room.max_children');
$rates = $this->Rate->find('all',array('conditions'=>$conditions,'order'=>$order, 'fields'=> $fields));
我认为会这样做,希望它适合你