web-dev-qa-db-fra.com

Comment obtenir le dernier identifiant dans Eloquent ORM laravel

J'effectue une opération de base de données avec "Eloquent ORM in Laravel". Je veux juste prendre le dernier identifiant d'insertion (pas l'identifiant maximal) dans la base de données.

J'ai cherché à obtenir le dernier identifiant d'insertion dans laravel Eloquent ORM, j'ai obtenu le lien suivant ( Laravel, obtenir le dernier identifiant d'insertion en utilisant Eloquent ) qui est utilisé pour obtenir le dernier identifiant d'insertion de la fonction "$data->save()".

Mais j'ai besoin de

"Model::create($data)";

Ma requête:

GeneralSettingModel::create($GeneralData);

User::create($loginuserdata);

Comment puis-je récupérer le dernier identifiant inséré?

16

Comme le dit la documentation: Insérer, mettre à jour, supprimer

"Vous pouvez également utiliser la méthode create pour enregistrer un nouveau modèle dans une seule ligne Line. L'instance de modèle insérée vous sera renvoyée à partir de la méthode . Cependant, avant de le pour spécifier un attribut remplissable ou gardé sur le modèle, comme tous les modèles Eloquent qui protègent contre l'affectation en masse.

Après avoir enregistré ou créé un nouveau modèle utilisant des ID auto-incrémentés, vous pouvez récupérer l'ID en accédant à l'attribut id de l'objet: "

$insertedId = $user->id;

Donc dans votre échantillon:

$user = User::create($loginuserdata);
$insertedId = $user->id;

puis sur la table2 il va être

$input['table2_id'] = $insertedId;
table2::create($input);
41
Edgar Orozco

**** Pour Laravel ****

$user = new User();

$user->name = 'John';

$user->save();

//Getting Last inserted id

$insertedId = $user->id;
20
Majbah Habib
$lastId = User::create($loginuserdata)->id;
3
user2339271

Vous pouvez envelopper vos données dans la méthode insertGetId () comme ceci

$id = DB::table('table')->insertGetId( $data );

Dans ce cas, le tableau $ data ressemblerait à ceci

$data = [ 'field' => 'data' , 'field' => 'data' ];

et si vous utilisez la façade de base de données, vous pouvez simplement ajouter la méthode lastInsertID () à votre requête.

$lastInsertedID = DB::table('table')->insert( $data )->lastInsertId();
3
Pankaj katiyar

Comme d’autres l’ont dit, vous pouvez récupérer votre identifiant en utilisant

$model->id;

mais seulement si vous utilisez la convention de dénomination standard pour éloquent. Si vous souhaitez utiliser un autre nom pour la colonne primaryKey, par exemple:

class Users extends Model{
    $primaryKey = 'userid';
}

vous pouvez récupérer le dernier identifiant inséré en appelant

$model->userid;

Il est décrit dans: https://laravel.com/docs/master/eloquent#eloquent-model-conventions où l'on peut trouver:

Eloquent supposera également que chaque table a une colonne de clé primaire Identifiant nommé. Vous pouvez définir une propriété $ primaryKey pour remplacer ceci convention.

De plus, Eloquent suppose que la clé primaire est une incrémentation valeur entière, ce qui signifie que par défaut, la clé primaire sera jeté sur un int automatiquement. Si vous souhaitez utiliser une méthode non incrémentante ou une clé primaire non numérique, vous devez définir le public $ incrementing propriété sur votre modèle à false.

2
Krzysiek Grzembski

Vous pouvez le faire comme,

public function store(Request $request,ModelName $obj)
{
        $lastInsertedId = $obj->create($request->all())->id;

}

J'espère que ceci vous aidera.

2
Raham
$user = (new user)->create($request->all()) ;

        \Session::flash('message', 'Thanks , Your record No (' .$user->id . ') has been Successfully added');

C’est ma façon de faire cela, je retourne l’objet inséré, puis j’obtiens son id ou toute autre propriété.

facile .. et complet

0
Hos Mercury

Ce code fonctionne très bien pour moi: Laravel 5.3  

$upstatus = User::create($status); return response()->json($upstatus);

Pages utilisateur/site sur lequel j'ai été appelé data.id

0
MD Ashik

Modèle éloquent  

$user = new Reports();        
$user->email= '[email protected]';  
$user->save();
$lastInsertId = $user->id;

Utilisation de Query Builder

 $lastInsertId = DB::table('reports')->insertGetId(['email' => '[email protected]']);
0
srmilon