У меня есть таблице такого вида. Куда я записываю изменение по статусу для тикета
Мне это нужно для аналитики, чтобы я сделал таблицу в которой отобразил кто какие тикеты и менял с какого статуса на какой. Вот что должно выйти
Но мне не нравится мой алгоритм
$getTickets = mPDO::query("SELECT COUNT(t.id) as count_id, t.user_id FROM log_ticket_statuses t GROUP BY t.user_id")->fetchAll();
foreach ($getTickets as $ticket) {
$ticket['user'] = mPDO::select(UsersEntity::class, ['uid' => $ticket['user_id']])->fetch();
$status = ['Ready to Resolve', 'Assigned', 'On Hold', 'In Progress', 'Resolved'];
foreach ($status as $item) {
$where_status = [
'user_id' => $ticket['user_id'],
'new_status' => $item
];
$t = strtolower(str_replace(' ', '_', $item));
$list = mPDO::select([LotTicketsStatusEntity::class], $where_status)->fetchAll();
$ticket['count_'.$t] = count($list);
}
$where_note = [
'userid' => $ticket['user_id'],
'deleted_is' => 'no',
];
$ticket['count_note'] = mPDO::select([NotesEntity::class, 'select' => 'count(userid) as counts', 'group' => 'userid'], $where_note)->fetch(\PDO::FETCH_ASSOC)['counts'] ?? 0;
$items[] = $ticket;
}
А именно то что я группирую потом делаю перебор и еще раз группирую.