2017-06-21 79 views
-1

我正在开发一个symfony应用程序,我需要一次插入多个raw,Doctrine ORM不是一个好选择,因为对于每个raw,它将打开一个连接来执行查询,为了避免这种情况,并有一个连接插入所有原料我使用准备声明的dbal语言,它工作正常,除了我需要获得插入的原始码的ID,它似乎唯一可用的函数是lastinsertedid它只返回最后一个ID不是所有最后插入的,我怎么能做到这一点? 任何帮助将不胜感激!通过doctrine获取插入的raws的id dbal

+0

位题外话,但该学说ORM打开每个查询新的连接的概念是不准确的。你能显示你准备好的sql语句吗? – Cerad

回答

2

这实际上与教义无关。如果你想要所有插入的id,它必须在MySQL中可能。 “这是不可能的,如果学说没有批量插入它将支持批量插入:)之后返回ID列表”

检查与MySQL有关的答案:

How can I Insert many rows into a MySQL table and return the new IDs?

MySQL LAST_INSERT_ID() used with multiple records INSERT statement

但它可能在postgresql(因为你没有提到你DB):

Retrieving serial id from batch inserted rows in postgresql

1

在将内容插入数据库之前,您实际上可以生成ID。例如,使用随机UUID。 这个库可能是使用:https://github.com/ramsey/uuid

use Ramsey\Uuid\Uuid; 

$uuid4 = Uuid::uuid4(); 
echo $uuid4->toString()