验证一个类别是否已经存在,如果存在则保存()如果不存在则添加()PrestaShop
Verify if a category already exist, if exists save() if doesn't exist add() PrestaShop
我的项目是使用 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 类别中
无需使用 if ($exists)
,因为 $category->save();
会检查类别是否存在,如果存在则会更新它,否则会创建它。
这个话题可以参考你之前的问题:
我认为您的问题是因为您忘记将类别设置为活动:
$category->active = 1;
此外,您应该检查 $category->save();
的 return 值。
希望对您有所帮助!
我找到了治愈方法
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();
}
我的项目是使用 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 类别中
无需使用 if ($exists)
,因为 $category->save();
会检查类别是否存在,如果存在则会更新它,否则会创建它。
这个话题可以参考你之前的问题:
我认为您的问题是因为您忘记将类别设置为活动:
$category->active = 1;
此外,您应该检查 $category->save();
的 return 值。
希望对您有所帮助!
我找到了治愈方法
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();
}