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

时间:2016-01-14 09:27:57

标签: 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();

我已经在stackoverflow上的某处读到了

  

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

应该做的伎俩。不幸的是,这总是返回零。有人能看出我做错了吗?

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

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

致以最诚挚的问候,

Evert Arends

2 个答案:

答案 0 :(得分:7)

Prestashop已经在classes/ObjectModel.php方法add()

中执行了此命令
// Get object id in database
$this->id = Db::getInstance()->Insert_ID();

在对象上使用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.

答案 1 :(得分:0)

Last Inserted Id:

      echo $category->id;