Prestashop添加类别ID

问题描述:

我通过php脚本添加类别到Prestashop有一个小问题。一个好人的帮助我的脚本添加类别:Prestashop添加类别ID

$cat = new Category(); 
$cat->id = 301; 
$cat->id_category = 301; 
$cat->id_category_default = 301; 
$cat->name = 'category name'; 
$cat->active = 1; 
$cat->link_rewrite = Tools::link_rewrite($cat->name); 
$cat->id_parent = Configuration::get('PS_HOME_CATEGORY'); 
$cat->add(); 

正如你可以看到设置类别ID一试ID,id_category和category_default,但它不工作,因为它DATABSE填写ID auto_incrementaly。

如何使用自己的ID作类别?谢谢

+0

为什么你想它插入一个自动增量值? – 2013-03-07 08:46:23

+0

因为我正在使用使用parnet id类别的XML导入脚本,所以对于我来说使用相同的id更容易。 如果我delte auto_increament在数据库中,它不起作用。 – Draq 2013-03-07 09:46:37

是的,它不起作用,因为你通过调用add函数来使用PS CRUDs。如果您想添加自己的自动增量值或ID,则应该编写自己的数据库插入查询。在最新的PS 1.5.x中很容易。如果你使用的是PS 1.5.x,那么就像下面这样做。

$data = array(
      'id_category' => 301, 
      'active' => 1, 
    ...... and so one with other no language fields 

之后调用插入功能

Db::getInstance()->insert('category', $data); 

现在对于语言数据插入创建其它阵列如下面

$dataLang = array (

'id_category' => 301, 
'id_lang' => 1, 
'name' => 'my category', 

..... and so on 

); 

现在插入它也如上

Db::getInstance()->insert('category_lang', $dataLang); 

请注意,如果您使用多种语言,那么你有惰性语言数据在所有语言的循环或将它们插入无回路这永远是您轻松每种语言。

注意:上面的代码没有经过测试,只是一个示例代码。

谢谢

+0

你好,非常感谢!我还有一个问题。我如何才能找到如果elemnt的数组需要?我也一样认为产品,并有大量的数组元素,我想知道什么是必需的,什么不是。比你非常muhc! – Draq 2013-03-10 15:54:00

+0

你好,你可以找到它在两个方面,无论是在表结构,或在Category类。如果你打开类类别类/ category.php你将有一个名为阵列公共静态$定义。在这个数组中,所有的类别字段都将以数组格式定义。结帐的领域,你会看到,他们中的一些有“必要” =>真实的元素,这是必填字段。希望它会有所帮助。 – 2013-03-11 06:29:26

您可以修改webservice的API。

您必须注释文件WebserviceRequest.php的这段台词

/*elseif ($this->method == 'POST' && count($ids) > 0) 
{ 
    $this->setError(400, 'id is forbidden when adding a new resource', 91); 
    return false; 
}*/