Prestashop添加带ID的类别

时间:2013-03-07 08:43:42

标签: php sql prestashop

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

$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的try id,id_category和category_default,但它不起作用,因为在数据库中它填充了id auto_incrementaly。

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

2 个答案:

答案 0 :(得分:2)

是的,它不起作用,因为您通过调用add函数使用PS CRUD。如果要添加自己的自动递增值或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);

请注意,如果您使用的是多种语言,那么您必须在所有语言的循环中使用惰性语言数据,或者为每种语言插入不带循环的语言数据。

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

谢谢

答案 1 :(得分:0)

您可以修改网络服务的API。

您必须注释这一行文件Web服务Request.php

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