从doctrine和本地mysql查询中获取最后插入的ID

3

我在Symfony2中使用Doctrine。但是我使用了原生的MySQL查询来插入一些数据。现在我想要从数据库中获取最后插入的ID。我的代码如下:

$stmt = $this->getDoctrine()->getManager()
             ->getConnection()
             ->prepare("INSERT INTO tb_company (v1,v2,v3) values('$v1','$v2','$v3')");
$stmt->execute();

所以,为了恢复最后插入的id,我尝试了以下方法:

$stmt->insert_id; 

$id=LAST_INSERT_ID(id)

$id=$stmt->getId();

我尝试了很多方法,但都没有成功。我对Doctrine不太熟悉。 如何从这里获取最后插入的ID? 我错过了什么吗?


1
请检查链接,你会得到答案。https://dev59.com/OWw05IYBdhLWcg3wiyfg - user2727841
1个回答

18

我认为你需要这样的东西:

$conn = $this->getDoctrine()->getConnection();

$stmt = $conn->prepare('INSERT INTO tb_company (v1, v2, v3) values(:v1, :v2, :v3)');
$stmt->bindValue('v1', $v1);
$stmt->bindValue('v2', $v2);
$stmt->bindValue('v3', $v3);
$stmt->execute();

$id = $conn->lastInsertId();

由于bindValueexecute返回一个boolean,所以你不能将它们串连起来使用。


1
今天是个特别的日子。2013年12月31日,兄弟你救了我的命。谢谢 :) - AtanuCSE
@AtanuCSE,即使lastInsertId()是一个好的解决方案(与连接相关),但在我看来,这是一个更好的解决方案(第一个使用ORM)。链接 - Gun2sh
1
@GunnerAziz 我完全同意,如果你要使用Doctrine,你应该同时使用ORM。然而,他说:_我在Symfony2中使用Doctrine。但是我使用了本地的MySQL查询来插入一些数据。现在我想从数据库中获取最后插入的ID。_我不知道他为什么要使用本地查询,也不关心。 :) - keyboardSmasher
又挽救了一条生命。 - Mwangi Thiga

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接