Comment puis-je obtenir le dernier identifiant d'insertion avec doctrine 2 ORM? Je n'ai pas trouvé cela dans la documentation de la doctrine, est-ce même possible?Obtenir le dernier identifiant d'insertion avec doctrine 2?
Répondre
je devais utiliser ceci après la chasse d'eau pour obtenir le dernier id insérer:
$em->persist($user);
$em->flush();
$user->getId();
Je ne peux pas l'utiliser. Obtenir l'erreur Appel à la méthode indéfinie Test \ Entity \ Test :: getId() dans "Mon Projet" –
@ noobie-php Vous devez définir un getter public pour votre Id (si celui-ci est privé comme il se doit) – cheesemacfly
@cheesemacfly : J'ai déjà trié cette erreur est générée (dans mon scénario) quand nous sommes incapables de flush() pour une raison quelconque, une fois que Flush() est exécuté avec succès getID() commence à fonctionner, en supposant getter et setters ne sont pas un problème ici –
appel flush() peut potentiellement ajouter beaucoup de nouvelles entités, donc il ny a pas vraiment la notion de « lastInsertId ». Cependant, Doctrine remplira les champs d'identité à chaque génération, de sorte que l'accès au champ id après avoir appelé flush contiendra toujours l'ID d'une entité nouvellement "persistée".
Vous pouvez accéder à l'ID après avoir appelé la méthode persist du gestionnaire d'entités.
$widgetEntity = new WidgetEntity();
$entityManager->persist($widgetEntity);
$entityManager->flush();
$widgetEntity->getId();
Vous avez besoin de rincer afin d'obtenir cet ID. Syntaxe Error Fix: Ajout du point-virgule après l'appel de $ entityManager-> flush().
J'ai dû rincer pour récupérer la valeur. La persistance n'était pas suffisante, car les éléments ne sont pas réellement écrits dans la base de données tant que vous n'avez pas vidé. –
Un peu tard pour répondre à la question. Mais,
Si c'est une base de données MySQL
devrait $doctrine_record_object->id
travail si AUTO_INCREMENT
est défini dans la base de données et dans la définition de votre table.
Si vous n'êtes pas en utilisant des entités mais SQL natif comme indiqué here alors vous pouvez obtenir le dernier ID inséré comme indiqué ci-dessous:
$entityManager->getConnection()->lastInsertId()
Pour les bases de données avec des séquences telles que PostgreSQL s'il vous plaît pas que vous pouvez fournissez le nom de la séquence en tant que premier paramètre de la méthode lastInsertId
.
$entityManager->getConnection()->lastInsertId($seqName = 'my_sequence')
Pour plus d'informations un coup d'oeil au code sur GitHub here et here.
Cela peut ne pas fonctionner avec tous les SGBD. Par exemple, cela ne fonctionne pas avec Postgres (à cause des séquences) –
Génial !! J'ai passé des heures à chercher ce petit extrait. – MikeGA
@ paul.ago Vous avez juste besoin de connaître le nom de la séquence, par exemple: 'lastInsertId ('articles_id_seq')' – ChocoDeveloper
- 1. Obtenir le dernier identifiant de div dynamique
- 2. Comment PDO connaît-il le dernier identifiant inséré dans MySQL?
- 3. Obtenir le dernier identifiant inséré dans un déclencheur?
- 4. CodeIgniter activeecord, récupère le dernier identifiant d'insertion?
- 5. doctrine php dernier numéro d'identification
- 6. VBA Comment trouver le dernier identifiant d'insertion?
- 7. Informix: comment obtenir un identifiant du dernier enregistrement inséré
- 8. Configuration de Doctrine 2 avec MySQL
- 9. en utilisant doctrine 2 avec SQL Server
- 10. Comment obtenir le dernier identifiant inséré à l'aide de l'API JS?
- 11. Doctrine 2 Sortable
- 12. Doctrine 2 PlainValue attendu
- 13. doctrine 2 dql alias
- 14. Doctrine 2 Validations
- 15. Comment obtenir le dernier identifiant inséré dans une expression personnalisée SQL Linq To Sql?
- 16. MySQL ON DUPLICATE KEY - dernier identifiant d'insertion?
- 17. Comment faire une procédure stockée retourne le dernier identifiant Inséré
- 18. Propriété 'name' dans Doctrine 2
- 19. Obtenir le dernier état de l'article
- 20. Comment obtenir tous les boutons radio avec le même identifiant?
- 21. Obtenir mon dernier message Twitter avec PHP
- 22. Obtenir le dernier en date du dernier jour d'un mois
- 23. Java, PreparedStatement, TransactSQL (MS SQL), dernier identifiant d'insertion
- 24. Comment obtenir le dernier jour du mois
- 25. Doctrine 2 obtenir le vrai nom de classe de la classe proxy
- 26. Obtenir le dernier tweet des utilisateurs avec Django
- 27. obtenir le dernier commit pour blob avec ruby / grit
- 28. Obtenir le dernier nom de classe d'un tableau avec jquery
- 29. Comment obtenir le dernier segment avec une expression régulière?
- 30. Zend Framework avec une structure modulaire + Doctrine 2
Essayez ceci, à la fin de votre insertion, retournez l'id ... comme return $ this-> id; – Manie