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);
**** Für Laravel ****
$user = new User();
$user->name = 'John';
$user->save();
//Getting Last inserted id
$insertedId = $user->id;
$lastId = User::create($loginuserdata)->id;
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();
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.
Sie können es als tun,
public function store(Request $request,ModelName $obj)
{
$lastInsertedId = $obj->create($request->all())->id;
}
Hoffe, das wird dir helfen.
$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
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
Das ist mein Versuch:
$model_ins = Model::orderBy('id', 'desc')->take(1)->first();
Und benutze $model_ins->id
.
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]']);