Récupérer le Dernier Id Inséré à l'Aide de Laravel Éloquent
Je suis actuellement en utilisant le code ci-dessous pour insérer des données dans une table:
<?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 le dernier ID inséré, mais je ne sais pas comment l'obtenir.
Salutations!
Vous devez vous connecter pour publier un commentaire.
Après
save
,$data->id
devrait être le dernier id inséré.Pour la mise à jour de laravel version essayez cette
0
. Dans mon cas, l'id est une chaîne de caractères (UUID) et pour que cela fonctionne, j'ai dû ajouterpublic $incrementing = false;
dans mon modèle.aid
et j'ai mis$incrementing = false;
mais Il n'est pas rentré trop!xdazz est droit dans ce cas, mais pour le bénéfice des futurs visiteurs qui pourraient être à l'aide de
DB::statement
ouDB::insert
, il est une autre façon:$id = DB::table('someTable')->insertGetId( ['field' => Input['data']);
timestamps
à l'aide deinsertGetId
, de bien vouloir vérifier iciinsertGetId
ne fonctionne que si l'id est en fait appelé "id".Pour n'importe qui qui aime aussi la façon dont Jeffrey Façon utilise
Model::create()
dans son Laracasts 5 tutoriels, où il envoie la Requête directement dans la base de données sans définition explicite de chaque champ dans le contrôleur, et en utilisant le modèle de$fillable
pour la mesure de masse (très important, pour toute personne nouvelle et en l'utilisant de cette façon): j'ai lu beaucoup de personnes utilisantinsertGetId()
mais malheureusement ce n'est pas le respect de la$fillable
liste blanche de sorte que vous obtiendrez des erreurs avec elle en essayant d'insérer _token et tout ce qui n'est pas un champ dans la base de données, finir par les choses que vous souhaitez filtrer, etc. Que dégouté de moi, parce que je veux utiliser la mesure de masse et de l'ensemble d'écrire moins de code, si possible. Heureusement Éloquent decréer
méthode juste encapsule la méthode save (ce que @xdazz cité ci-dessus), de sorte que vous pouvez toujours tirer la dernière création de l'ID...$new = Company::create($input);
return redirect('company/'.$new->id);
**** Pour Laravel ****
Tout d'abord créer un objet, Puis définissez les attributs de la valeur de cet objet, Puis enregistrer l'objet d'enregistrement, et ensuite de récupérer le dernier id inséré. comme
//Maintenant Obtenir Le Dernier id inséré
Si la table a une auto-incrémentation id, utilisez le insertGetId méthode pour insérer un disque, et ensuite récupérer l'ID:
Consulter: https://laravel.com/docs/5.1/queries#inserts
Dans laravel 5: vous pouvez faire ceci:
Cela a fonctionné pour moi dans laravel 4.2
Voici un exemple:
Ici est de savoir comment nous pouvons obtenir le dernier id inséré dans Laravel 4
Utilisation
insertGetId
à insérer et s'insérésid
en même tempsDe doc
Par
Model
Par
DB
Pour plus de détails : https://laravel.com/docs/5.5/queries#inserts
Après l'enregistrement du modèle, la initialisée instance a l'id:
Après économie un enregistrement dans la base de données, vous pouvez accéder à id par
$data->id
Dans Laravel 5.2 je voudrais faire aussi propre que possible:
Pour Laravel, Si vous insérez un nouvel enregistrement et appel
$data->save()
cette fonction exécute une requête d'INSERTION et renvoie la valeur de la clé primaire (c'est à dire id par défaut).Vous pouvez utiliser le code suivant:
Après
$data->id
vous donnera l'id inséréRemarque: Si votre autoincrement nom de la colonne est sno alors vous devriez utiliser
$data->sno
et pas$data->id
Pour insert()
Vous pouvez faire ceci:
Le chemin le plus court est probablement un appel de la
refresh()
sur le modèle:À L'Aide Éloquent Modèle
En Utilisant Le Générateur De Requêtes
Pour obtenir le dernier id inséré dans la base de données
Vous pouvez utiliser
ici $lastInsertedId va vous offre de dernière inséré incrément automatique de l'id.
Après L'Enregistrement
$data->save()
. toutes les données sont poussés à l'intérieur$data
. Comme c'est un objet et le courant de ligne est simplement enregistré récemment à l'intérieur de$data
. dernièreinsertId
sera trouvé à l'intérieur de$data->id
.Code de la réponse sera:
À L'Aide Éloquent Modèle
En Utilisant Le Générateur De Requêtes
Pour plus de méthodes pour obtenir la Dernière Ligne Insérée id dans Laravel : http://phpnotebook.com/95-laravel/127-3-methods-to-get-last-inserted-row-id-in-laravel