我通过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制作类别?谢谢
答案 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;
}*/