Массовое удаление
Здравствуйте! Вроде бы не нашёл на сайте.
Как сделать чтобы можно было удалять по списку артикулов продукты с сайта именно по списку, т.е. массово
Спасибо.
Как сделать чтобы можно было удалять по списку артикулов продукты с сайта именно по списку, т.е. массово
Спасибо.
Комментарии: 7
Интересно, как можно выборочно удалить несколько записей из базы данных? Наверное, нужно сделать какой-то запрос?
Что-то вроде такого, наверное:
Что-то вроде такого, наверное:
$q = $modx->newQuery('msProduct');
$q->innerJoin('msProductData', 'msproductData', 'msProduct.id = msProductData.id');
$q->where(array('msProductData.article:IN' => array('артикул1','артикул2','и т.д.')));
$modx->removeCollection('msProduct', $q);
в итоге удаляет весь «web». Т.е. не создает в $q не создаётся array для removeCollection…
Проверил на тесте и правда — удаляет. Причем, если использовать getCollection — то все правильно, а если remove — то нет.
Или это баг, или я туплю. Тогда так:
Или это баг, или я туплю. Тогда так:
$q = $modx->newQuery('msProduct');
$q->innerJoin('msProductData', 'msProductData', 'msProduct.id = msProductData.id');
$q->where(array('msProductData.article:IN' => array('артикул1','артикул2','и т.д.')));
$collection = $modx->getIterator('msProduct', $q);
foreach ($collection as $item) {
$item->remove();
}
Да, спасибо, так работает.
<?php
$lines=array();
$file = fopen(MODX_CORE_PATH.'import/delete.csv', 'r');
if ($file) {
echo "Файл ".$file." загружен...";
while (!feof($file)) {
$lines[]=fgets($file);
}
$q = $modx->newQuery('msProduct');
$q->innerJoin('msProductData', 'msProductData', 'msProduct.id = msProductData.id');
$q->where(array('msProductData.article:IN' => $lines));
$collection = $modx->getIterator('msProduct', $q);
foreach ($collection as $item) {
$item->remove();
}
fclose($file);
} else {
echo "Не могу найти файл".$file;
}
Не могу догнать, почему так не работает? где ошибка?
При этом «print_r($lines);» выдаёт:
Array ( [0] => 4411 [1] => 161060 [2] => 161062 [3] => 171572 )
Array ( [0] => 4411 [1] => 161060 [2] => 161062 [3] => 171572 )
array $lines все значения перевёл из string в int и всё заработало…
В критерия должны передаваться параметры where это все что можно передать
т.е.
возможно только так
т.е.
возможно только так
$criteria = array(
"article:LIKE => "%{$qwery}%"
);
$modx->removeCollection('you_class', $criteria);
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.