Убедитесь, что категория уже существует, если существует save (), если не существует add () PrestaShop - PullRequest
1 голос
/ 30 мая 2019

Мой проект с Webservices добавляет категории, и когда я обновляю файл категорий, он создает те же категории, что и раньше.

  foreach ($XMLRSString->Families->Family as $family)
        {   
            $categories = $family->Code;

            $exists = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS('select id_category from ps_category where id_category = "'.$categories['id_category'].'"');

                $category = new Category((int)$categories);

                $category->id=  (int)$categories;

                $category->id_category_default=(int)$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');

                if($exists){
                    $category->add();
                    echo "created ".$family->Code."<br>";
                }
                else{
                    $category->save();
                    echo "already exists ".$family->Code."<br>";
                }
        }

Не появляется никаких ошибок, но не отображаетсяпо категориям PrestaShop

Ответы [ 2 ]

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

Нет необходимости использовать if ($exists), так как $category->save(); уже проверит, существует ли категория, если это так, она обновит ее, в противном случае она создаст ее.

Вы можете обратиться к вашему предыдущему вопросу по этой теме: Как проверить, существует ли категория? PrestaShop

Я думаю, что ваша проблема связана с тем, что вы забыли установить категорию как активную:

$category->active = 1;

Кроме того, вы должны проверить возвращаемое значение $category->save();.

Надеюсь, это поможет!

0 голосов
/ 31 мая 2019

Я нахожу лекарство

if($id_category=Db::getInstance()->getValue('SELECT id_category FROM '._DB_PREFIX_.'category WHERE id_category="'.pSQL($categories).'"')){
                    $category->save();
                }
                else{
                    $category->id= $categories;
                    $category->id_category_default=(int)$family->Code;
                    $category->force_id = true;
                    $category->add();
                }   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...