php - 验证一个类别是否已经存在,如果存在 save() 如果不存在 add() PrestaShop
问题描述
我的项目是使用 Web 服务添加类别,当我刷新类别文件时,它会创建与以前相同的类别。
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 类别中
解决方案
不需要使用if ($exists)
,因为$category->save();
已经检查类别是否存在,如果存在则更新它,否则将创建它。
你可以参考你之前关于这个主题的问题: 如何测试一个类别是否已经存在?PrestaShop
我认为您的问题来自您忘记将类别设置为活动的事实:
$category->active = 1;
此外,您应该检查$category->save();
.
我希望这有帮助!
推荐阅读
- node.js - 电子 - 发送带有修改的Referer标头的GET请求
- perl - 如何在管道输入到 Perl 脚本后读取密码行
- javascript - 调整浏览器窗口大小时,addEventListener 'resize' 不会触发
- java - Fedora 27 中的 Java 安装问题
- java - Guava Futures.transform 与“Real” Executor 与 transformAsync 与 DirectExecutor
- android - 即使在用户离开或关闭应用程序后,广告仍会显示
- c# - 尝试从另一个脚本获取变量时使用未分配的局部变量
- javascript - 在 class="A" 的元素中获取 class="B" 的 DOM 元素
- apache - 基于每个路径的 Apache 2.4 超时
- python - 使用多处理池预处理数据