Обновить TV-поле
Салют. Возникла необходимость по крону обновлять тв-поле у всех ресурсов, шаблон которых id5 и id6. Чтобы снизить нагрузку, использую limit,offset
$q = $modx->newQuery('modResource');
$q->where(array(
'template:IN' => [5,6]
));
$q->select(array(
'modResource.*'
));
$q->limit('200', '0');
$q->sortby('id', 'DESC');
$q->prepare();
$docs = $modx->getCollection('modResource', $q);
foreach ($docs as $k => $resource) {
$value = 1;
$resource->setTVValue('tvname', $value );
$resource->save();
}Все ок, но обновляются только первые 200 ресурсов. Как правильно запустить скрипт по кругу, увеличивая каждый раз offset на 200? Спасибо
Техническая поддержка MODX
Сайт лежит, тормозит или остался без разработчика?
Переезд с MODX 2 на 3, PHP 7 на 8, скорость и безопасность. Поддержка со сроками и ответственностью, а не совет в чате.
Подробнее
Реклама
Комментарии: 2
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Используйте PDO вместо xPDO. Если вам значение именно в 1 надо — два запроса — select — получить id ресурсов с нужными шаблонами, update — обновить значение. А если этот тв используется только у этих шаблонов, так и id ресурсов получать не обязательно.