Как можно оптимизировать данный код
Есть каталог(id-20) внутри которого собраны все товары. У каждого товара есть tv поле с id подкаталога где они должны быть.
Я написал такой код который должен перемещать товар из каталога с id 20 в подкаталог, id которого написан в TV поле
Как можно решить проблему краша в этом случае?
Я написал такой код который должен перемещать товар из каталога с id 20 в подкаталог, id которого написан в TV поле
$arr = $modx->getChildIds(20,1,array('context' => 'web'));
foreach($arr as $id){
$res = $modx->getObject('modResource', $id);
$parent = $res->getTVValue('parent');
$res->set('parent', $parent);
$res->save();
}
Но консоль напрочь зависает после двух секунд работы и выдаёт окошко с ошибкой.Как можно решить проблему краша в этом случае?
Комментарии: 7
Делай проверку на существования значения $parent
$arr = $modx->getChildIds(20,1,array('context' => 'web'));
$collection = $modx->getCollection('modResource', array('id:IN' => $arr));
foreach($collection as $res){
$parent = $res->getTVValue('parent');
if(is_int($parent)){
$res->set('parent', $parent);
$res->save();
}
}
на минуточку, в тв всегда хранится строка, поэтому проверять на is_int чуть более, чем бесполезно.
Также благодарю за решение, скоро скажу что из вариантов сработало
foreach ($modx->getIterator(modResource::class, ['parent' => 20]) as $object) {
if (($parent = $object->getTVValue('parent')) && is_numeric($parent)) {
$object->set('parent', $parent);
$object->save();
}
}
Спасибо за код, сейчас протестирую и отозвусь
Но консоль напрочь зависает после двух секунд работы и выдаёт окошко с ошибкой.Внимание, вопрос — что в черном ящике?
Как можно решить проблему краша в этом случае?
В чёрном ящике ошибка 502
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.