如何在对象上使用add()后检索插入的ID?

Eve*_*nds 5 php mysql prestashop prestashop-1.6

我正在尝试创建一个自动导入XML文件的脚本,我得到了这个工作,但由于某种原因我需要从我添加的类别中获取ID,这个类别ID是自动增量,所以我没办法从现有数据中获取此信息.

所以我的代码看起来像这样:

        $category = new Category;
        $category->active = 1;
        $category->id_parent = 3;
        $category->name[1] = $product->category_name;;
        $category->link_rewrite[1] = Tools::link_rewrite($product_xml->category_name);
        echo "<br />name of new category = $product->category_name <br /> <br />";
        $category->add();
        $category->id = Db::getInstance()->Insert_ID();
Run Code Online (Sandbox Code Playgroud)

我在这里读过stackoverflow的某个地方

$ category-> id = Db :: getInstance() - > Insert_ID();

应该做的伎俩.不幸的是,这总是返回零.谁能看到我做错了什么?

编辑:我正在使用prestashop版本1.6

编辑:答案: 你不需要"Db :: getInstance() - > Insert_ID();" 在$ object-> add()之后,已经生成了一个ID,你唯一需要做的就是:echo $ object-> id; 你会看到你的身份证明.

最好的祝福,

Evert Arends

Flo*_*tre 7

Prestashop已经在classes/ObjectModel.php方法中执行了此命令add()

// Get object id in database
$this->id = Db::getInstance()->Insert_ID();
Run Code Online (Sandbox Code Playgroud)

当您add()在对象上使用时,此对象会自动从数据库中获取其新ID.所以$category->id应该已经包含了它的新ID.

$category = new Category;
$category->active = 1;
$category->id_parent = 3;
$category->name[1] = $product->category_name;;
$category->link_rewrite[1] = Tools::link_rewrite($product_xml->category_name);
echo "<br />name of new category = $product->category_name <br /> <br />";
$category->add(); // Add will add the category to database and update category with its new id automatically
echo "category id = ".$category->id; // will show the category id.
Run Code Online (Sandbox Code Playgroud)