cakephp检查多个表

cakephp检查多个表,cakephp,Cakephp,我正在从数据库中获取一个包含条件的费率信息列表。但是,如果日期范围中有日期,并且rateID形成另一个名为“最低住宿”的表格,我希望添加另一个最低住宿条件。费率表已经有一个最小停留时间,但在某些日期,如果该日期在我通过的日期范围内,我希望超过该时间 我是cakephp新手,因此我不确定如何检查minStay表中日期范围内的日期。然后得到最大的minStay并将其添加到条件中 费率表中的默认minStay为1 以下是minStay表中的数据: 日期:2011年10月31日费率ID:21分钟时间:2

我正在从数据库中获取一个包含条件的费率信息列表。但是,如果日期范围中有日期,并且rateID形成另一个名为“最低住宿”的表格,我希望添加另一个最低住宿条件。费率表已经有一个最小停留时间,但在某些日期,如果该日期在我通过的日期范围内,我希望超过该时间

我是cakephp新手,因此我不确定如何检查minStay表中日期范围内的日期。然后得到最大的minStay并将其添加到条件中

费率表中的默认minStay为1

以下是minStay表中的数据:

日期:2011年10月31日费率ID:21分钟时间:2 日期:2011年11月1日费率ID:21分钟时间:3

结果:如果日期范围为2011年10月31日至2011年11月2日/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));
$conditions=array(
'Rate.enabled'=>1,'Rate.is\u corporate'=>$is\u corporate,'Rate.minimum\u stay'=>$date\u end,
'或'=>array('Rate.maximum_stay'=>0,'Rate.maximum_stay>='=>$days)
);
$order='Rate.list_no';
$this->Rate->contain('Room.id'、'Room.title'、'Room.max_成人'、'Room.max_儿童');
$rates=$this->Rate->find('all',array('conditions'=>$conditions,'order'=>$order));

我想我明白你想做什么,如果不明白,请发表评论

要做到这一点,你需要做这样的事情(假设你有很多MinStay)

$conditions=array(
'Rate.enabled'=>1,'Rate.is\u corporate'=>$is\u corporate,'Rate.minimum\u stay'=>$date\u end,
'或'=>数组('Rate.maximum_stay'=>0,'Rate.maximum_stay>='=>$days),
'和'=>array('或'=>array('minStay.date BETWEEN?和?'=>array($date\u start,$date\u end)),

'minStay.minimum_stay您应该使用fields选项而不是contain来选择所需的字段,如果存在关联,您也可以使用contain来使用另一个模型。如果没有关联,您可以动态执行这些操作或强制连接。您可以发布您要添加的确切条件吗?使用cakephp样式,如model.something=Model2.somethingelse我在模型中有关联。我正在与条件作斗争。我想从Rate表中获取记录,并在最小停留时间上附加条件,从名为minStay的新表到上面的表。例如(‘Rate.minimum_stay’是的,我想包括另一个表,如果它们是日期范围的记录,那么它将检查日期范围是否大于最小停留时间。这看起来是正确的。这就是它所做的吗?谢谢如果它们是minStay表中的记录,那么我不想考虑费率。minimum_stay,但使用新的one、 如果没有该费率和使用默认费率的日期的记录,则保留最低费用
    $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));