407 Stimmen

Holen Sie sich die zuletzt eingefügte ID mit Laravel Eloquent

Derzeit verwende ich den folgenden Code, um Daten in eine Tabelle einzufügen:

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);
    }
}

Ich möchte die zuletzt eingefügte ID zurückgeben, weiß aber nicht, wie ich sie bekommen soll.

Mit freundlichen Grüßen!

560voto

xdazz Punkte 155864

Nachdem speichern, sollte $data->id die zuletzt eingefügte ID sein.

$data->save();
$data->id;

Kann wie folgt verwendet werden.

return Response::json(array('success' => true, 'last_insert_id' => $data->id), 200);

Für eine aktualisierte Laravel-Version versuchen Sie dies

return response()->json(array('success' => true, 'last_insert_id' => $data->id), 200);

181voto

Benubird Punkte 16981

xdazz hat in diesem Fall recht, aber zum Wohl zukünftiger Besucher, die möglicherweise DB::statement oder DB::insert verwenden, gibt es einen anderen Weg:

DB::getPdo()->lastInsertId();

82voto

Aamir Punkte 2005

Wenn die Tabelle eine automatisch inkrementierende ID hat, verwenden Sie die insertGetId-Methode, um einen Datensatz einzufügen und dann die ID abzurufen:

$id = DB::table('users')->insertGetId([
    'email' => 'john@example.com',
    'votes' => 0
]);

Verweis: https://laravel.com/docs/5.1/queries#inserts

73voto

dave Punkte 2249

Für alle, die auch mögen, wie Jeffrey Way Model::create() in seinen Laracasts 5 Tutorials verwendet, wo er die Anfrage direkt in die Datenbank sendet, ohne in dem Controller jedes Feld explizit festzulegen, und das Modell $fillable für Massenzuweisung verwendet (sehr wichtig, für alle Neulinge, die diese Art nutzen): Ich habe gelesen, dass viele Leute insertGetId() benutzen, aber leider respektiert dies nicht die $fillable Whitelist, so dass Sie beim Versuch, _token und alles, was kein Feld in der Datenbank ist, einzufügen, Fehler bekommen und Dinge setzen, die Sie filtern möchten, etc. Das hat mich enttäuscht, weil ich Massenzuweisung verwenden und insgesamt weniger Code schreiben möchte, wenn möglich. Glücklicherweise umschließt die create Methode von Eloquent einfach die save Methode (was @xdazz oben zitiert hat), so dass Sie immer noch die zuletzt erstellte ID abrufen können...

public function store() {

    $input = Request::all();
    $id = Company::create($input)->id;

    return redirect('company/'.$id);
}

55voto

Majbah Habib Punkte 4216

**** Für Laravel ****

Zunächst erstellen Sie ein Objekt, setzen dann Attributwerte für dieses Objekt, speichern dann den Objekteintrag und erhalten schließlich die zuletzt eingefügte ID. wie zum Beispiel

$user = new User();        

$user->name = 'John';  

$user->save();

// Jetzt die zuletzt eingefügte ID abrufen

$insertedId = $user->id;

echo $insertedId ;

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X