2011-10-12 55 views
0

我從條件數據庫中獲取費率信息列表。不過,如果日期範圍中包含日期,並且rateID形成另一個稱爲「最短停留時間」的表,我希望添加另一個最小逗留條件。費率表已經有一個分鐘的停留時間,但是在某些日期,如果日期在我通過的日期範圍內,我想要超過這個時間。cakephp檢查多個表

我是cakephp的新手,所以我不確定如何檢查日期範圍中日期的minStay表。然後獲得最大的minStay並將其添加到條件。

默認minStay在費率表是1

這裏是在minStay表中的數據:

日期:2011-10-31 rateID:21 minStay:2 日期:2011年1月11日rateID :21分鐘3:

結果:如果日期範圍是31-10-2011至2-11-2011/2晚,則無結果。如果3晚或以上,那麼結果。

我希望我能正確解釋。

包含日期範圍變量爲$今天

 $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

您應該使用字段選項而不是包含來選擇所需的字段,如果關聯存在,也可以使用包含使用其他模型。如果沒有任何聯繫,你可以在飛行中或做一個部隊加入。你能發佈你想要添加的確切條件嗎?使用cakephp風格,如Model.something = Model2.somethingElse – api55

+0

我有模型中的關聯。我正在爲條件而努力。我想從Rate表中獲取記錄,並在最小逗留時間內將一個名爲minStay的新表更改爲上述內容。例如('Rate.minimum_stay <='=> $ days OR array('minStay.date BETWEEN?AND?'=> array($ date_start,$ date_end))和minStay.minimum_stay < => $ days –

回答

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)); 

我認爲,這將做到這一點,希望它爲你的作品

+0

是的,我想包含另一個表如果它們是日期範圍內的記錄,那麼它會檢查日期範圍是否大於最小值保持全部。這看起來是正確的。是它在做什麼?謝謝 –

+0

如果它們是記錄在minStay表中,那麼我不會想要考慮Rate.minimum_stay,但使用新的。如果沒有該費率的記錄以及那些使用默認Rate.minimum_stay –

+0

的日期,我認爲它確實如此:D是否可以發佈您的結果?是否有效? – api55