webentwicklung-frage-antwort-db.com.de

So erhalten Sie die letzte Einfüge-ID in Eloquent ORM laravel

Ich führe eine Datenbankoperation mit "Eloquent ORM in Laravel" durch. Ich möchte nur die letzte Einfüge-ID (nicht die maximale ID) in die Datenbank übernehmen.

Ich habe gesucht, um die letzte Einfüge-ID in Eloquent ORM zu erhalten. Ich habe folgenden Link erhalten ( Laravel, letzte Einfüge-ID mit Eloquent ), der sich auf die letzte Einfüge-ID von folgender Funktion bezieht: "$data->save()".

Aber ich muss bekommen

"Model::create($data)";

Meine Abfrage:

GeneralSettingModel::create($GeneralData);

User::create($loginuserdata);

Wie kann ich die zuletzt eingegebene ID abrufen?

Wie die Dokumente sagen: Einfügen, Aktualisieren, Löschen

"Sie können die create-Methode auch verwenden, um ein neues Modell in einer einzelnen -Zeile zu speichern. Die eingefügte Modellinstanz wird Ihnen von der -Methode zurückgegeben. Bevor Sie dies tun, müssen Sie dies tun entweder ein befüllbares oder ein bewehrtes Attribut im Modell angeben, da alle Eloquent-Modelle vor einer Massenzuweisung schützen.

Nach dem Speichern oder Erstellen eines neuen Modells, das automatisch inkrementierende IDs verwendet, Sie können die ID abrufen, indem Sie auf das ID-Attribut des Objekts zugreifen: "

$insertedId = $user->id;

Also in deiner Probe:

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

dann auf table2 wird es sein

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

**** Für 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

Sie könnten Ihre Daten in die insertGetId () -Methode wie folgt umschließen

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

In diesem Fall würde das Array $ data ungefähr so ​​aussehen

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

wenn Sie die DB-Fassade verwenden, können Sie die lastInsertID () -Methode einfach an Ihre Abfrage anhängen.

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

Wie andere vor mir sagten, können Sie die ID mit Hilfe von aufrufen

$model->id;

aber nur, wenn Sie die Standardbenennungskonvention für Eloquent verwenden. Wenn Sie einen anderen Namen für die primaryKey-Spalte verwenden möchten, z. B .:

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

sie können die zuletzt eingefügte ID durch Aufrufen abrufen

$model->userid;

Es ist beschrieben in: https://laravel.com/docs/master/eloquent#eloquent-model-conventions wo man finden kann:

Eloquent geht außerdem davon aus, dass jede Tabelle eine Primärschlüsselspalte enthält ID benannt Sie können eine $ primaryKey -Eigenschaft definieren, um diese .__ zu überschreiben. Konvention.

Außerdem geht Eloquent davon aus, dass der Primärschlüssel ein inkrementierendes .__ ist. ganzzahliger Wert, dh der Primärschlüssel lautet standardmäßig automatisch in ein int umgewandelt werden. Wenn Sie ein nichtinkrementierendes oder .__ verwenden möchten. Bei einem nicht numerischen Primärschlüssel müssen Sie den öffentlichen $ -inkrementierenden Wert angeben Eigenschaft auf Ihrem Modell auf false.

2

Sie können es als tun,

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

}

Hoffe, das wird dir helfen.

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

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

Das ist meine Art, das zu tun, ich gebe das eingefügte Objekt zurück und erhalte dann seine ID oder eine andere Eigenschaft.

einfach .. und komplett

0
Hos Mercury

Dieser Code funktioniert gut für mich: Laravel 5.3  

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

Benutzerseiten/Website, die ich angerufen habe data.id

0
MD Ashik

Das ist mein Versuch:

$model_ins = Model::orderBy('id', 'desc')->take(1)->first();

Und benutze $model_ins->id.

0
horse

Eloquent Model  

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

Query Builder verwenden

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