Как преобразовать этот запрос в запрос 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

У меня есть два контроллера и две модели, счета-фактуры и продажи.

2 ответа

  1. Для агрегатных функций, таких как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
    

    Используйте следующие ссылки в качестве ссылок:

    Соединение таблиц

    Получение Данных

    Виртуальные поля