将MySQL查询转换为cakephp查询

时间:2012-09-16 18:33:57

标签: mysql cakephp-2.0

我想使用cakephp的ORM的find()方法翻译此$查询。

$custom_query = $this->Agency->query(
        "SELECT a.id, a.name, a.created, c.total
          FROM agencies a
            join (SELECT agency_id, sum(price) total
                    FROM commands
                    GROUP BY agency_id) C
              on a.id = c.agency_id;"
    );

(此查询完全符合我的要求,但我想了解如何使用cakephp ORM和$ virtualFields) 感谢您的帮助和时间。

1 个答案:

答案 0 :(得分:0)

如果您使用的是CakePHP 1.3或更高版本,则可以在模型中定义虚拟字段(即计算字段)。

根据您的查询,我将在模型类中定义虚拟字段,如下所示:

$virtualFields = array(
   'total'=>'(SELECT SUM(price) FROM commands WHERE agency_id = Agency.id)'
);

然后您可以将该字段称为常规ORM字段:

$this->Agency->find('all',array(
    'fields'=>array(
        'id','name','created','total'
        )
    )
);

蛋糕手册页:http://book.cakephp.org/2.0/en/models/virtual-fields.html