Bonsoir à tous,

J'ai un formulaire qui doit exécuter deux requêtes à la suite.

C'est une petite appli pour la gestion de mon association et des enfants inscrits aux activités.

Dans le même formulaire, je créé l'activité (qui s'insert dans une base de données "activites") et dans la foulée, j'enregistre le/les animateur(s) lié à cette activité dans une autre base.

Dans ma première requête, je souhaiterais récupérer l'ID qui se génére automatiquement (auto_increment) et immédiatement, récupérer cet ID pour pouvoir liés dans la base activites_animateur chaque animateur avec l'ID de l'activité et donc exécuter ma seconde requête dans la même méthode.

J'espère être assé clair dans mon explication.

Merci d'avance pour votre aide.

4 réponses


Orivoir21
Réponse acceptée

Bonjour, en tapant: PHP SQL Get last inserted id sur google j'ai trouvé cette page sur w3schools qui montre des extraits de code avec mysqli et PDO pour récupérer un id lors d'un INSERT INTO.

Le code d'exemple avec PDO vient récupérer l'id directement sur l'objet PDO.

  $sql = "INSERT INTO MyGuests (firstname, lastname, email)
  VALUES ('John', 'Doe', 'john@example.com')";
  // use exec() because no results are returned
  $conn->exec($sql);
  $last_id = $conn->lastInsertId();
gillesr
Réponse acceptée

Bonjour,

ça fait un petit moment que je ne touche plus à Laravel, mais après avoir jeté un coup d'oeil rapide à la doc, je pense que tu peux utiliser la méthode insertGetId.
Voir ici : https://laravel.com/docs/9.x/queries#auto-incrementing-ids

Strappal
Auteur

Merci de cette réponse Orivoir21,

J'ai oublié de préciser que je développais mon appli sous laravel et depuis peu, livewire. Mais c'est une piste à exploiter.

Est ce transposable avec Eloquent ?

De ce que j'ai compris, cela récupére l'ID de la dernière insertion, si deux personnes procédent à un enregistrement, n'y a t'il pas un risque de se retrouver avec le mauvais ID récupéré ?

Merci de ton aide.

Strappal
Auteur

Merci gillesr, effectivement, je pense que ça devrait me convenir, je vais faire un essai.