IT TIP

교리 2로 마지막 삽입 ID를 얻습니까?

itqueen 2020. 10. 30. 21:20
반응형

교리 2로 마지막 삽입 ID를 얻습니까?


교리 2 ORM으로 마지막 삽입 ID를 얻으려면 어떻게해야합니까? 나는 이것을 교리 문서에서 찾지 못했습니다. 이것이 가능할까요?


마지막 삽입 ID를 얻기 위해 플러시 후 이것을 사용해야했습니다.

$em->persist($user);
$em->flush();
$user->getId();

엔티티 관리자의 persist 메소드를 호출 한 후 ID에 액세스 할 수 있습니다.

$widgetEntity = new WidgetEntity();
$entityManager->persist($widgetEntity);
$entityManager->flush();
$widgetEntity->getId();

당신은 이 ID를 얻기 위해 세척해야합니다.

구문 오류 수정 : $ entityManager-> flush () 호출 후 세미콜론이 추가되었습니다.


여기에 표시된 것처럼 엔티티가 아닌 Native SQL을 사용하는 경우 아래와 같이 마지막으로 삽입 된 ID를 가져올 수 있습니다.

$entityManager->getConnection()->lastInsertId()

PostgreSQL 과 같은 시퀀스가있는 데이터베이스의 경우 시퀀스 이름을 lastInsertId메서드 의 첫 번째 매개 변수로 제공 할 수 있습니다 .

$entityManager->getConnection()->lastInsertId($seqName = 'my_sequence')

자세한 내용은 여기여기 에있는 GitHub의 코드를 참조 하십시오 .


flush () 호출은 잠재적으로 많은 새로운 엔티티를 추가 할 수 있으므로 실제로 "lastInsertId"라는 개념이 없습니다. 그러나 Doctrine은 ID 필드가 생성 될 때마다 채워 지므로 flush를 호출 한 후 id 필드에 액세스하면 항상 새로 "지속 된"엔티티의 ID가 포함됩니다.


질문에 답하기에는 조금 늦었습니다. 그러나,

MySQL 데이터베이스 인 경우

데이터베이스와 테이블 정의에 정의되어 $doctrine_record_object->id있으면 작동합니다 AUTO_INCREMENT.

참고 URL : https://stackoverflow.com/questions/3509350/get-the-last-insert-id-with-doctrine-2

반응형