2017-06-21 70 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()