2016-10-01 2 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, которые связывают to invoice table primary key '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