J'utilise actuellement le code ci-dessous pour insérer des données dans un tableau:
<?php
public function saveDetailsCompany()
{
$post = Input::All();
$data = new Company;
$data->nombre = $post['name'];
$data->direccion = $post['address'];
$data->telefono = $post['phone'];
$data->email = $post['email'];
$data->giro = $post['type'];
$data->fecha_registro = date("Y-m-d H:i:s");
$data->fecha_modificacion = date("Y-m-d H:i:s");
if ($data->save()) {
return Response::json(array('success' => true), 200);
}
}
Je veux retourner la dernière pièce d'identité insérée mais je ne sais pas comment l'obtenir.
Sincères amitiés!
0
. Dans mon cas, l'ID était une chaîne (UUID) et pour que cela fonctionne, j'ai dû ajouterpublic $incrementing = false;
mon modèle.aid
et je l'ai défini$incrementing = false;
mais il ne revient pas trop!xdazz a raison dans ce cas, mais pour le bénéfice des futurs visiteurs qui pourraient utiliser
DB::statement
ouDB::insert
, il existe une autre façon:la source
$id = DB::table('someTable')->insertGetId( ['field' => Input['data']);
timestamps
utilisantinsertGetId
, veuillez vérifier iciinsertGetId
ne fonctionne que si les colonnes id sont réellement appelées "id".Pour tous ceux qui aiment également la façon dont Jeffrey Way utilise
Model::create()
dans ses tutoriels Laracasts 5, où il envoie simplement la demande directement dans la base de données sans définir explicitement chaque champ dans le contrôleur, et en utilisant les modèles$fillable
pour l'affectation de masse (très important, pour toute personne nouvelle et utilisant de cette façon): J'ai lu beaucoup de gens qui utilisentinsertGetId()
mais malheureusement cela ne respecte pas la$fillable
liste blanche, donc vous aurez des erreurs en essayant d'insérer _token et tout ce qui n'est pas un champ dans la base de données, finissez par définir les choses que vous voulez filtrer, etc. Heureusement, lacreate
méthode d'Eloquent encapsule simplement la méthode de sauvegarde (ce que @xdazz a cité ci-dessus), de sorte que vous pouvez toujours extraire le dernier ID créé ...la source
$new = Company::create($input);
return redirect('company/'.$new->id);
Si la table a un identifiant à incrémentation automatique, utilisez la méthode insertGetId pour insérer un enregistrement, puis récupérez l'ID:
Référez-vous à: https://laravel.com/docs/5.1/queries#inserts
la source
**** Pour Laravel ****
Créez d'abord un objet, puis définissez la valeur des attributs pour cet objet, puis enregistrez l'enregistrement d'objet, puis obtenez le dernier identifiant inséré. tel que
// Obtention du dernier identifiant inséré
la source
Dans laravel 5: vous pouvez le faire:
la source
Voici un exemple:
la source
Cela a fonctionné pour moi dans laravel 4.2
la source
Voici comment obtenir le dernier identifiant inséré dans Laravel 4
la source
Utilisez
insertGetId
pour insérer et être inséréid
en même tempsDe doc
Par
Model
Par
DB
Pour plus de détails: https://laravel.com/docs/5.5/queries#inserts
la source
Après avoir enregistré le modèle, l'instance initialisée a l'ID:
la source
Pour insert ()
Exemple:
la source
Dans Laravel 5.2, je le rendrais aussi propre que possible:
la source
Après
$data->id
vous donnera l'identifiant inséré,Remarque: Si le nom de votre colonne d'auto-incrémentation est sno, vous devez utiliser
$data->sno
et non$data->id
la source
Après avoir sauvegardé un enregistrement dans la base de données, vous pouvez accéder à id en
$data->id
la source
Pour Laravel, si vous insérez un nouvel enregistrement et appelez
$data->save()
cette fonction exécute une requête INSERT et retourne la valeur de la clé primaire (ie id par défaut).Vous pouvez utiliser le code suivant:
la source
la source
Tu peux le faire:
la source
Pour obtenir le dernier identifiant inséré dans la base de données Vous pouvez utiliser
ici $ lastInserredId vous donnera le dernier identifiant d'incrémentation automatique inséré.
la source
Le chemin le plus court est probablement un appel du
refresh()
sur le modèle:la source
Bien que cette question soit un peu datée. Ma solution rapide et sale ressemblerait à ceci:
Mais je suppose qu'il est vulnérable aux conditions de concurrence sur les bases de données très fréquentées.
la source
Vous pouvez également essayer comme ceci:
la source
Utilisation d'un modèle éloquent
Utilisation de Query Builder
la source
Après l'enregistrement
$data->save()
. toutes les données sont poussées à l'intérieur$data
. Comme il s'agit d'un objet et que la ligne actuelle vient d'être enregistrée récemment à l'intérieur$data
. si dernierinsertId
se trouvera à l'intérieur$data->id
.Le code de réponse sera:
la source
La méthode facultative sera:
Source de la version Laravel 5.8
la source
Vous pouvez obtenir le dernier identifiant inséré avec le même objet que vous appelez la méthode save;
Vous pouvez donc simplement écrire:
la source
Vous pouvez facilement récupérer le dernier identifiant d'enregistrement inséré
C'est une astuce géniale pour récupérer l'ID du dernier enregistrement inséré dans la base de données.
la source
$user->id
suffit après la création pour obtenir l'id inséré.la source
Utilisation d'un modèle éloquent
Utilisation de Query Builder
Pour plus de méthodes pour obtenir l'ID de la dernière ligne insérée dans Laravel: http://phpnotebook.com/95-laravel/127-3-methods-to-get-last-instered-row-id-in-laravel
la source
Vous pouvez utiliser la
$this
variable constructeur pour obtenir le "dernier ID inséré à l'aide de Laravel Eloquent" (sans ajouter de colonne supplémentaire) dans la fonction ou le contrôleur actuel.la source