Ich möchte die letzte Datei abrufen, die in meine Tabelle eingefügt wurde. Ich weiß, dass die Methode first()
existiert und liefert Ihnen die erste Datei in der Tabelle, aber ich weiß nicht, wie man die letzte Einfügung zu bekommen.
Sie müssen nach demselben Feld ordnen, nach dem Sie jetzt ordnen, aber absteigend.
Wenn Sie zum Beispiel einen Zeitstempel für den Zeitpunkt des Uploads mit dem Namen upload_time
haben, würden Sie etwa so vorgehen;
Für Vor-Laravel 4
return DB::table('files')->order_by('upload_time', 'desc')->first();
Für Laravel 4 und höher
return DB::table('files')->orderBy('upload_time', 'desc')->first();
Für Laravel 5.7 und höher
return DB::table('files')->latest('upload_time')->first();
Dies ordnet die Zeilen in der Dateitabelle nach Upload-Zeit, absteigend, und nimmt die erste. Dies wird die zuletzt hochgeladene Datei sein.
Sie haben nie erwähnt, ob Sie Eloquent, Laravel ' s Standard ORM oder nicht verwenden. Für den Fall, dass Sie sind, sagen wir, Sie wollen den letzten Eintrag einer User-Tabelle, von created_at zu erhalten, könnten Sie wahrscheinlich wie folgt tun:
User::orderBy('created_at', 'desc')->first();
Zuerst werden die Benutzer nach dem Feld created_at absteigend sortiert, und dann wird der erste Datensatz des Ergebnisses genommen.
Das Ergebnis ist eine Instanz des User-Objekts, keine Sammlung. Um diese Alternative nutzen zu können, müssen Sie natürlich ein Benutzermodell haben, das die Eloquent-Klasse erweitert. Das mag ein wenig verwirrend klingen, aber der Einstieg ist wirklich einfach und ORM kann sehr hilfreich sein.
Weitere Informationen finden Sie in der offiziellen Dokumentation, die ziemlich umfangreich und detailliert ist.
Wenn Sie nach der tatsächlichen Zeile suchen, die Sie gerade mit Laravel 3 und 4 eingefügt haben, wenn Sie eine "Speichern"- oder "Erstellen"-Aktion für ein neues Modell durchführen, wie:
$user->save();
-oder-
$user = User::create(array('email' => '[email protected]'));
dann wird die eingefügte Modellinstanz zurückgegeben und kann für weitere Aktionen verwendet werden, z. B. für die Weiterleitung zur Profilseite des soeben erstellten Benutzers.
Die Suche nach dem zuletzt eingefügten Datensatz funktioniert in Systemen mit geringem Datenaufkommen fast immer, aber wenn zwei Einfügungen gleichzeitig erfolgen, kann es passieren, dass die Abfrage den falschen Datensatz findet. Dies kann in einem transaktionalen System, in dem mehrere Tabellen aktualisiert werden müssen, zu einem echten Problem werden.