Я работаю над электронной коммерцией с платформой cakephp и использую диаграммы Google для отчетов. Мое требование - получить все записи в течение всех 12 месяцев, поэтому я использовал следующие код для одного месяцаCakephp получить все месячные записи с одним запросом, т.е. с одним поиском
Запрос
SELECT COUNT(*) AS count FROM orderproductmasters AS Orderproductmaster
LEFT JOIN ordermasters AS Ordermaster ON
(Orderproductmaster.ordermaster_id = Ordermaster.id) LEFT JOIN productmasters AS Productmaster ON
(Orderproductmaster.productmaster_id = Productmaster.id)
WHERE Ordermaster.orderstatusmaster_id = 1 AND Month(Orderproductmaster.created) = 8
код
$this->Orderproductmaster->find('count',
array('conditions'=>array('Ordermaster.orderstatusmaster_id'=>1,'
Month(Orderproductmaster.created)'=>8)));
Так, мне нужны записи, как за январь, февраль, март и все 12 месяцев ..., так что в течение 12 месяцев я использую следующий код
for($i=1;$i<13;$i++)
{
$orderproductmasters[$i] = $this->Orderproductmaster->find('count',
array('conditions'=>array('Ordermaster.orderstatusmaster_id'=>1,
'Month(Orderproductmaster.created)'=>$i)));
}
Так вопрос может быть глупо, но это возможно, чтобы получить все месяцы записи без использования для цикла, т. е. в рамках одного запроса. Заранее спасибо
какие именно SQL запрос выполняется на сервере? –
SELECT COUNT (*) AS 'count' FROM' orderproductmasters' AS 'Orderproductmaster' LEFT JOIN' ordermasters' AS 'Ordermaster' ON (' Orderproductmaster'''ordermaster_id' = 'Ordermaster''''') LEFT JOIN' productmasters' AS 'Productmaster' ON (' Orderproductmaster'.'productmaster_id' = 'Productmaster'.'id') WHERE' Ordermaster' .'orderstatusmaster_id' = 1 AND Month ('Orderproductmaster'.created') = 8 – Asim
http: // stackoverflow.com/questions/2655614/cakephp-count-items-per-month-in-a-year может работать проверка – MKD