2016-10-01 130 views
0

如何將此查詢轉換爲CakePHP查詢?如何將此查詢轉換爲CakePHP查詢?

SELECT COUNT(invoices.id) FROM invoices,sales 
WHERE invoices.id=sales.invoice_id AND to_id='13' AND is_updated='0' 
GROUP BY invoice_id 

我有兩個控制器和兩個模型,發票和銷售。

+0

請解釋這既是表中的主鍵和外鍵 –

+0

對不起,我只是忘了要添加外鍵報復,在銷售表中有一個與之相關的invoice_id以發票表主鍵「ID」 –

+0

@DebasishSahoo您使用的是CakePHP的哪個版本,因爲這會產生很大的差異! – drmonkeyninja

回答

0

對於像COUNT聚合函數,你需要創建虛擬領域。

$this->Invoice->virtualFields['total'] = 'COUNT(`Invoice`.`id`)'; 

$result = $this->Invoice->find('all', array(
    'fields' => array('Invoice.total'), 
    'joins' => array(
     array(
      'table' => 'sales', 
      'alias' => 'Sale', 
      'type' => 'INNER', 
      'conditions' => array(
       'Invoice.id = Sale.invoice_id', 
      ) 
     ) 
    ), 
    'conditions' => array(
    'to_id' => 13, 
    'is_updated' => 0 
), 
    'group' => array('Sale.invoice_id') 
)); 

pr($result); // Check your result 

使用以下鏈接作爲參考:

Joining tables

Retrieving Your Data

Virtual fields