Не обновляются счётчики контактов в пустых категориях методом waContactCategoryModel->recalcCounters() Принято

3

При обновлении счетчиков контактов в категориях с использованием функции 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 комментариев

    Добавить комментарий

    Чтобы добавить комментарий, зарегистрируйтесь или войдите