-2

I'm working on a symfony application, and i need to insert multiple raws at once, Doctrine ORM is not a good option because for each raw it will open a connection to execute the query, to avoid this and have one connection inserting all the raws i used prepared statement of doctrine dbal and it works fine, except i need to get the ids of the inserted raws, it seems the only available function is lastinsertedid which returns only the last id not all the last inserted ones, how can i achieve this? any help would be appreciated!

ZeSoft
  • 305
  • 2
  • 4
  • 13
  • Bit off topic but the notion that Doctrine ORM opens a new connection for each query is not accurate. Can you show your prepared sql statement? – Cerad Jun 22 '17 at 12:02

2 Answers2

2

This is actually not related to doctrine at all. If you want all inserted id's it must be possible in MySQL. "It's unlikely that if doctrine don't have batch insert it will support returning list of ids after batch insert :)"

Check answers related to 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

But it's possible in postgresql (since you didn't mention you DB):

Retrieving serial id from batch inserted rows in postgresql

zajca
  • 2,288
  • 4
  • 30
  • 40
1

You can actually generate IDs before inserting content into database. For example, using random UUIDs. This library might be of use: https://github.com/ramsey/uuid

use Ramsey\Uuid\Uuid;

$uuid4 = Uuid::uuid4();
echo $uuid4->toString()
svgrafov
  • 1,970
  • 4
  • 16
  • 32