2014-02-20 63 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

回答