CakePHP: SQL-запрос к Cake-> find () - PullRequest
1 голос
/ 07 июля 2011

Во-первых, вот моя диаграмма отношений с базой данных .

Я пытаюсь построить диаграмму с номером определенного элемента, заказанного на каждый день

date       | count
2011-04-22 | 10348
2011-04-23 | 2751

Так как я более знаком с SQL, я сначала это понял, и вот что наконец-то вышло (и работает)

 SELECT dn.delivery_date, SUM(dnp.count*ep.count) as count
 FROM
 `delivery_notes` AS dn JOIN `delivery_notes_products` AS dnp
    ON dn.id = dnp.delivery_note_id
 JOIN `products` AS p
    ON dnp.product_id = p.id
 JOIN `elements_products` AS ep
    ON p.id = ep.product_id
 JOIN `elements` AS e
    ON ep.element_id = e.id
 WHERE e.id = 4
   AND dn.delivery_date BETWEEN '2011-04-22' AND '2011-05-22'
 GROUP BY dn.delivery_date

Теперь, чтобы улучшить мой , получить немного Cakeнавыки поиска, я пытаюсь понять, как превратить это в поиск («список») или поиск («все»), но я действительно не знаю, как мне решать этот вопрос ...

Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 09 июля 2011
$this->DeliveryNote->bindModel(array(
    'hasOne'=>array(
        'DeliveryNotesProduct'=>array(
            'conditions'=>array('DeliveryNotesProduct.DeliveryNoteId = DeliveryNote.id')
        ),
        'Product'=>array(
            'conditions'=>array('DeliveryNotesProduct.ProductId = Product.id')
        ),
        'ElementsProduct'=>array(
            'conditions'=>array('ElementsProduct.ProductId  = Product.id')
        ),
        'Element'=>array(
            'conditions'=>array('ElementsProduct.ElementId  = Element.id')
        )

    )
));


$data = $this->DeliveryNote->find('all',array(
    'conditions'=>array(
        'Element.id'=>4,
        'DeliveryNote.DeliveryDate BETWEEN ? AND ?'=>array('2011-04-22','2011-05-22')),
    'fields'=>array('DeliveryNote.DeliveryDate','SUM(DeliveryNotesProduct.Count * ElementsProduct.Count) AS count'),
    'group'=>array('DeliveryNote.DeliveryDate')
));

Cakephp bindModel используется для объединения таблиц, а hasOne является одним из типов ассоциации http://book.cakephp.org/view/1040/Relationship-Types

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...