Удалить все ресурсы парента [MODX]

Удаление любого количества ресурсов в заданном ресурсе
31 Октября 2023
php

При работе с большим количество ресурсов в modx, иногда требуется удалить все ресурсы в подкатегории, сколько бы их там не было.

Мы используем 2 варианта в зависимости от ситуации:

  1. Подходит для удаления всех ресурсов, когда глубина ресурсов не большая

    $docs=$modx->getCollection('modResource', array('parent' => 23));
    foreach ($docs as $doc) {
        $doc->remove();
    }
    
  2. Подходит для случаев когда глубина более 5, в данном случае мы получаем все id ресурсов, а после этого удаляем по id такие ресурсы

    $ids = $modx->getChildIds(23, 6); // 23 - парент, 6 глубина на которой нужно искать ресурсы
    $docs = $modx->getCollection('modResource', array(
        'id:IN' => $ids
    ));
    foreach ($docs as $doc) {
        $doc->remove();
    }