我从其他数据库Web服务获取类别,并在刷新文件以添加类别时将它们放到PrestaShop中,我想确保类别ID是否存在,如果存在,我想更新类别。
$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();
}
}
答案 0 :(得分:1)
通常,如果您有大数据(也有安全数据),最好将数据直接插入数据库中。使用Db类代替Category类。
否则,必须使用save()方法代替add()方法
答案 1 :(得分:1)
这将起作用:
$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()
静态方法检查对象是否有效。