2014-02-20 65 views
0

我需要從我的控制器的一個執行這個查詢:cakePHP- SQL語法基於查詢到蛋糕的基於陣列的查詢

SELECT `tel_no` 
     FROM `donors` AS `dnr` 
     LEFT JOIN `donations` AS `dn` ON `dnr`.id = `dn`.donor_id 
     LEFT JOIN `donation_methods` AS `dm` ON `dn`.donation_method_id = `dm`.id 
     WHERE NOW() >= DATE_ADD(dn.created, INTERVAL dm.recovery_time DAY) 

正如你可能會注意到,3models參與此查詢。我正在努力如何生成一個基於數組的查詢與蛋糕爲上述。

$elligibleDonors = $this->Donor->find('all', array(
     'fields' => array('Donor.tel_no', 'Donor.email'), 
     'conditions' => array('NOW() >= Donation.created + Donation_method.recovery_time'), 
     'recursive' => 2 
     )); 
     $this->set('elligibleDonors', $elligibleDonors); 

我試過,但該列不EXIS這是ofcourse一個語法錯誤,一個我不能想出一個錯誤狀態!

[編輯]

關係船舶

捐贈的hasMany捐贈 捐贈屬於關聯捐助 捐贈屬於關聯DonationMethod DonationMethod的hasMany捐贈

$joins = array(
      array('table'=>'donations', 
       'alias' => 'Donation', 
       'type'=>'left', 
       'conditions'=> array(
       'Donation.donor_id = Donor.id' 
      )), 
      array('table'=>'donation_methods', 
       'alias' => 'DonationMethod', 
       'type'=>'left', 
       'conditions'=> array(
       'DonationMethod.id = Donation.donation_method_id' 
      )) 
     ); 

我已經發現,這是我想要,但我在哪裏把這個代碼中的'WHERE'子句條件?

+0

爲什麼不使用查詢本身,與表走樣所以蛋糕將它作爲排序標準陣列? – yossi

+0

你的意思是說,使用query()方法?如果是這樣,那麼sql注入呢。 PS。我需要添加到基於用戶篩選的條件。 – LogixMaster

+0

是的,'query()'。一般來說,蛋糕會消毒任何輸入。它將完成蛋糕的對象 - 你可以自己調用(檢查api)。 至於錯誤 - 哪一列?!?!請提供更多信息。像表結構和確切的錯誤 – yossi

回答