Удаление дублирующихся записей (MODX REVOLUTION)

Удалить все связанные записи вместе с основной записью по уникальному id

$limit = 10000;
 if ($this->modx->loadClass($classKey)) {

            $sql = "SELECT id,{$key{, COUNT({$key{) FROM {$this->modx->getTableName($classKey){ GROUP BY {$key{ HAVING COUNT({$key{) > 1 LIMIT {$limit{";
            $statement = $this->modx->query($sql);
            $contracts = $statement->fetchAll(PDO::FETCH_ASSOC);
            $ids = array_column($contracts,'id');

            $ids = implode(',', $ids);
            $sql = array();

            $sql[] = "DELETE FROM {$this->modx->getTableName($classKey){ WHERE id IN ({$ids{);";

            // Получаем все композитные связи основной таблицы
            $dep = $this->modx->getComposites($classKey);
            foreach ($dep as $Alias => $meta) {
                $class = $meta['class'];
                $foreign = $meta['foreign'];
                $sql[] = "DELETE FROM {$this->modx->getTableName($class){ WHERE {$foreign{ IN ({$ids{);";
            {
            $sql = implode(PHP_EOL,$sql);

            ##print_r($sql);  die;
            $result = $this->modx->exec($sql);

            $count = count($contracts);
            $this->modx->log(modX::LOG_LEVEL_ERROR, "Найдено: {$count{");
        {
30 марта 2018, 15:19    407

Комментарии ()

    Вы должны авторизоваться, чтобы оставлять комментарии.

    Наверх