2011-04-12 50 views
0

如何将这个查询转换为使用cakePHP的方法find()使用find()方法的cakePHP查询

查询:

SELECT Ch.id, COUNT(DU.d_id) AS a, SUM(DU.d_id) AS b 
FROM c AS Ch 
LEFT JOIN du AS DU ON DU.c_id = Ch.id AND MONTH(DU.created) = MONTH(NOW()) 
LEFT JOIN d AS D ON DU.d_id = D.id 
GROUP BY Ch.id 

回答

1
$Ch->find(
    'all',  
    'fields' => array(
       'Ch.id','COUNT(DU.d_id) AS a', 'SUM(DU.d_id) AS b'), 
    'joins' => array(
         array(
          'table' => 'du', 
          'alias' => 'DU', 
          'type' => 'LEFT', 
          'conditions' => array('DU.c_id = Ch.id AND MONTH(DU.created) = MONTH(NOW()')), 
         array(
          'table' => 'd', 
          'alias' => 'D', 
          'type' => 'LEFT', 
          'conditions' => array('DU.c_id = Ch.id AND MONTH(DU.created) = MONTH(NOW()')), 
    'group' => 'Ch.id');   

我没有测试过。更多关于Cake JOIN的信息:

http://book.cakephp.org/view/1018/find