我想使用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) 感谢您的帮助和时间。
答案 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