2012-09-16 134 views
0

我想使用cakephp的ORM的find()方法來翻譯這個$ query。將MySQL查詢翻譯成cakephp查詢

$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

您需要建立模型之間的拳頭關係。看到類似的[問題](http://stackoverflow.com/q/12130317/516219)。 – xeranas

+0

不,不知道,我知道所有的東西和模型之間的關係是好的,只需要一個例子與我的查詢find() – Elium1984

回答

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