Как обновить данные в таблице по API MODX?

Всем привет. Написал небольшой скрипт импорта цен из API REG.RU, хотелось бы при повторном запуске скрипта обновлять существующие данные. Как лучше проверить таблицу на существование данных и как обновить данные в условии?

Вот что у меня вышло:

$object = $modx->newObject('PayPanelDomain');

    if($object->get('zone') == null) {

        $object->set('zone', $zone);
        $object->set('domain', $domain);
        $object->set('whois', '');
        $object->set('idn', $idn);
        $object->set('groups', '');
        $object->set('popular', 0);
        $object->set('min', $reg_min_period);
        $object->set('max', $reg_max_period);
        $object->set('price_retail', $retail_reg_price);
        $object->set('price_partner', $reg_price);
        $object->set('percent', $procent);
        $object->set('advance', $price_procent);
        $object->set('price', $price);
        $object->set('active', 1);

        $object->save();

    } else {
        if($object->get('zone') != null) {
            echo 'Таблица заполнена!';
        }
    }
SEQUEL.ONE
24 февраля 2019, 23:28
modx.pro
1
667
0

Комментарии: 1

Василий Наумкин
25 февраля 2019, 07:23
1
+3
// Если такой зоны еще нет
if (!$object = $modx->getObject('PayPanelDomain', ['zone' => $zone])) {
    // Создаём её
    $object = $modx->newObject('PayPanelDomain');
    // И прописываем уникальный ключ
    $object->set('zone', $zone);
}
// А дальше уже выставляем остальные свойства
// Не важно, создание это новой, или обновление старой записи
$object->set('domain', $domain);
$object->set('whois', '');
$object->set('idn', $idn);
$object->set('groups', '');
$object->set('popular', 0);
$object->set('min', $reg_min_period);
$object->set('max', $reg_max_period);
$object->set('price_retail', $retail_reg_price);
$object->set('price_partner', $reg_price);
$object->set('percent', $procent);
$object->set('advance', $price_procent);
$object->set('price', $price);
$object->set('active', 1);

$object->save();
Подразумевается, что поле zone у PayPanelDomain уникально.
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    1