Как проверить, существует ли категория?PrestaShop - PullRequest
0 голосов
/ 28 мая 2019

Я получаю категорию из другого веб-сервиса базы данных и помещаю их в PrestaShop, когда обновляю файл для добавления категорий. Я хочу убедиться, что идентификатор категории существует, если он существует, я хочу обновить категорию.

$XMLRQString = '<?xml version="1.0" encoding="utf-8"?>'.
    '<x:Winmax4GetFamiliesRQ xmlns:x="urn:Winmax4GetFamiliesRQ">'.
    '</x:Winmax4GetFamiliesRQ >';

$return = $client->GetFamilies($Params);
$XMLRSString = new SimpleXMLElement($return->GetFamiliesResult);
if ($XMLRSString->Code > 0)
    echo '</br>Error: '.$XMLRSString->Code." ".$XMLRSString->Message;
else{

        foreach ($XMLRSString->Families->Family as $family)
        {   

            $category = new Category();

            $category->id = $family->Code;

            $category->force_id = true;

            $category->is_root_category = false;

            $category->name = array((int)Configuration::get('PS_LANG_DEFAULT') => $family->Designation);

            $category->link_rewrite = array((int)Configuration::get('PS_LANG_DEFAULT') =>  $family->Code);

            $category->id_parent = Configuration::get('PS_HOME_CATEGORY');

            $category->add();

        }
    }

Ответы [ 2 ]

1 голос
/ 28 мая 2019

Это будет работать:

$default_lang = (int)Configuration::get('PS_LANG_DEFAULT');
$home = (int)Configuration::get('PS_HOME_CATEGORY');
$category = new Category((int)$family->Code);
$category->is_root_category = false;
$category->name = array($default_lang => $family->Designation);
$category->link_rewrite = array($default_lang => $family->Code);
$category->id_parent = $home;
$category->save();

Кроме того, вы всегда можете проверить, является ли объект действительным, используя Validate::isLoadedObject() статический метод.

1 голос
/ 28 мая 2019

В общем, если у вас есть большие данные (а также безопасные данные), лучше вставить ваши данные непосредственно в базу данных. Используйте класс Db вместо класса Category.

В противном случае вы должны использовать метод save () вместо метода add ()

...