При обновлении счетчиков контактов в категориях с использованием функции recalcCounters класса waContactCategoryModel для категорий без контактов обновления не происходит. Проблема возникает из-за использования JOIN вместо LEFT JOIN. Правильно переписать функцию следующим образом:
public function recalcCounters($id = null)
{
$where = '';
if ($id) {
$ids = array_map('intval', (array) $id);
if (!$ids) {
return;
}
$where = "WHERE cc.id IN (".implode(',', $ids).")";
}
$sql = "UPDATE `wa_contact_category` cc LEFT JOIN (
SELECT cc.id, COUNT(*) AS count FROM `wa_contact_category` cc
JOIN `wa_contact_categories` ccs ON cc.id = ccs.category_id
{$where}
GROUP BY cc.id) t ON t.id = cc.id
SET cc.cnt = IFNULL(t.count, 0)";
$this->exec($sql);
}
}
0 комментариев