1

我在通过 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 的尝试 id、id_category 和 category_default,但它不起作用,因为在数据库中它填充 id auto_incrementaly。

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

4

2 回答 2

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);

请注意,如果您使用多种语言,那么您必须在循环中为所有语言惰性语言数据,或者为每种语言插入它们而不使用循环,这对您来说很容易。

注意:以上代码未经测试,仅为示例代码。

谢谢

于 2013-03-09T06:26:27.080 回答
0

可以修改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;
}*/
于 2014-05-20T11:20:07.743 回答