Проверить, если категория уже существует, если существует сохранить (), если не существует добавить() тема

Проверить, если категория уже существует, если существует сохранить (), если не существует добавить() тема

30.05.2019 07:13:49 Просмотров 55 Источник

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

  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

У вопроса есть решение - Посмотреть?

Ответы - Проверить, если категория уже существует, если существует сохранить (), если не существует добавить() тема / Verify if a category already exist, if exists save() if doesn't exist add() PrestaShop

Является ответом!
Bruno Leveque

30.05.2019 09:11:56

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

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

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

$category->active = 1;

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

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

https://stackoverflow.com/questions/56381919/verify-if-a-category-already-exist-if-exists-save-if-doesnt-exist-add-pres/56383520#comment99383358_56383520
Я создал одну категорию id: 25, и когда я выполняю файл, он переходит к автоматическому приращению, например id: 1050. Он не добавляет (), потому что я сохраняю ()...
https://stackoverflow.com/questions/56381919/verify-if-a-category-already-exist-if-exists-save-if-doesnt-exist-add-pres/56383520#comment99398678_56383520
Просто установите force_idследующим образом: $category->force_id = true;
Stefan Burghelea

31.05.2019 02:29:22

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

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();
                }   
Закрыть X