doctrine 2 ORMで最後の挿入IDを取得するにはどうすればよいですか?これは教義のドキュメントでは見つかりませんでしたが、これは可能ですか?
最後の挿入IDを取得するには、フラッシュ後にこれを使用する必要がありました。
$em->persist($user);
$em->flush();
$user->getId();
エンティティマネージャのpersistメソッドを呼び出した後、IDにアクセスできます。
$widgetEntity = new WidgetEntity();
$entityManager->persist($widgetEntity);
$entityManager->flush();
$widgetEntity->getId();
doこのIDを取得するには、フラッシュする必要があります。
構文エラーの修正:$ entityManager-> flush()が呼び出された後にセミコロンが追加されました。
here のようにエンティティではなくネイティブSQLを使用している場合は、次に示すように最後に挿入されたIDを取得できます。
$entityManager->getConnection()->lastInsertId()
PostgreSQL などのシーケンスを持つデータベースの場合、lastInsertId
メソッドの最初のパラメーターとしてシーケンス名を指定できることに注意してください。
$entityManager->getConnection()->lastInsertId($seqName = 'my_sequence')
Flush()を呼び出すと、多くの新しいエンティティが追加される可能性があるため、実際には「lastInsertId」という概念はありません。ただし、DoctrineはIDフィールドが生成されるたびにIDフィールドに入力します。したがって、flushを呼び出した後にidフィールドにアクセスすると、常に「永続的な」エンティティのIDが含まれます。
質問に答えるのが少し遅れました。しかし、
MySQLデータベースの場合
$doctrine_record_object->id
AUTO_INCREMENT
は、データベースおよびテーブル定義で定義されます。