ModxRevo Migx массовое удаление строк из таблицы migxTV

251
17 ноября 2017, 09:13

Есть migx поле, с двумя ключами : "usrid" и "pay", у "pay" значения 1 или 0. Необходимо массово удалить все строки в которых "pay"=0. А еще лучше если кто-то поможет понять почему у меня не работает сниппет:

[code]

        $page = $modx->getObject('modResource', 1);
        $usrTv = $page->getTVValue('migxusers');
        $users = json_decode($usrTv, true);
        foreach ($users as $key => $value) {
            foreach ($value as $k => $v) {
                if($k == "usrid" && $v == $special){
                    unset($users[$key]);
                      //$users[$key][pay] = '0';
                    $resource = $modx->getObject('modResource', 1);
                        $resource->setTVValue('3', json_encode($users));
                        $resource->save();
                }
            }
        }

[/code]

В него приходит переменная $special в которой содержится содержимое usrid из migx, предполагается что этот ключ из массива должен удалится и массив должен запушитmся обратно в бд, но этого не происходит, дропается вся таблица. по этому я на данный момент использую $users[$key][pay] = '0'; , но при этом накапливаются строки в таблице, а удалять их вручную вообще не вариант.

по этому необходим либо способ массово удалять строки с "pay"=0 , либо как-то поправить сниппет.

в переменную $users мне прилетает вот такого вида массив

$users[0] = array('MIGX_id' => 1, 'usrid' => 39014, 'pay' => 0);
$users[1] = array('MIGX_id' => 2, 'usrid' => 45732, 'pay' => 1);
$users[2] = array('MIGX_id' => 3, 'usrid' => 23456, 'pay' => 0);

толькочто пытался так:

array_splice($users,$key);

вроде помогло, но потом понял что оно не совсем корректно работает, было 2 строки у одной usrid = 1, у второй 11, и удалились оба

Answer 1
<?php
$res = $modx->getObject('modResource',12);
$old_price = $modx->fromJSON($res->getTVValue('migxusers'));
$new_price = array();
foreach($old_price as $row){
    if($row['pay'] != 0){
        $new_price[] = $row;
    }
}
$res->setTVValue(17,$modx->toJSON($new_price));
$res->save();
READ ALSO
PHP код внутри js скрипта

PHP код внутри js скрипта

Добрый день! Хочу заставить работать php внутри js-скриптаПомогите разобраться, пожалуйста, что я делаю е так?

155
Добавление картинки в новость PHP

Добавление картинки в новость PHP

есть форма в которой два инпута с заголовком и текстом новости, и также кнопка submitС добавлением новости проблем не возникало до тех пор, пока...

223
кнопка добавить в корзину joomla2 virtuemart

кнопка добавить в корзину joomla2 virtuemart

Почему кнопка добавить в корзину в категории не работает?

210
Apache и виртуальные хосты по сети

Apache и виртуальные хосты по сети

Стоит xampp windows и настроены виртуальные хосты по типу

189