Например, у меня есть таблицы - Orders1, Orders2, Orders3, Users.
Мне нужно составлять ежемесячные и квартальные отчеты для каждого пользователя. Например, я создаю функцию в модели Orders1 quartal_sum_by_users($users, $quarter)
. тогда я делаю что-то вроде этого:
$cost = 0;
foreach($users as $user) {
while($month <= 3) { // first three months
$orders = $this->Order1->find('all', array(
'recursive' => -1,
'fields' => array('DISTINCT id', 'COALESCE(cost+work_cost+work_installation_cost, 0) AS amount'),
'conditions' => array(
'MONTH(date_ordered)' => $month,
'YEAR(date_ordered)' => $year,
'current_status' => 3
)
));
foreach($orders as $order) {
$cost[$month] += $order[0]['amount'];
}
$month++;
} // WHILE
} // FOREACH
Итак, это работает, но очень медленно (система, с которой я перехожу, работает на простых PHP и SQL-запросах и работает нормально), и у меня 400+ пользователей и более 1000 для каждой таблицы Order.
Какой лучший способ сделать это в стиле CakePHP?