Optimieren von CRUD-Operationen mit Laravel Eloquent
Bei der Arbeit mit einer Datenbank in Laravel ist es üblich, Datensätze einzufügen oder zu aktualisieren. Um dies zu erreichen, greifen Entwickler häufig auf bedingte Anweisungen zurück, die prüfen, ob ein Datensatz vorhanden ist, bevor sie sich für eine Einfügung oder Aktualisierung entscheiden.
Die Methode firstOrNew()
Glücklicherweise Eloquent bietet eine effizientere Lösung durch die Methode firstOrNew(). Diese Methode prüft anhand angegebener Kriterien, ob ein Datensatz vorhanden ist, und gibt den ersten übereinstimmenden Datensatz zurück, falls dieser gefunden wird. Andernfalls wird eine neue Instanz des Modells erstellt.
Verwendungsbeispiel
Betrachten Sie das folgende Beispiel:
$shopOwner = ShopMeta::where('shopId', '=', $theID)
->where('metadataKey', '=', 2001)
->firstOrNew();
if ($shopOwner->exists) {
// Update the existing record
} else {
// Insert a new record
}
In diesem Beispiel wird die Methode firstOrNew() verwendet, um einen ShopMeta-Datensatz basierend auf shopId und metadataKey zu finden. Wenn der Datensatz vorhanden ist, wird der if-Block ausgeführt und der vorhandene Datensatz aktualisiert. Andernfalls wird der else-Block ausgeführt und ein neuer Datensatz eingefügt.
Erweitertes Beispiel
Hier ist ein umfassenderes Beispiel, das die Leistungsfähigkeit von firstOrNew() demonstriert:
$user = User::firstOrNew(array('name' => Input::get('name')));
$user->foo = Input::get('foo');
$user->save();
Aktualisierte Dokumentation
Bitte beachten Sie, dass der in der Antwort angegebene Dokumentationslink nicht mehr aktuell ist. Informationen zur neuesten Version von Laravel finden Sie in der folgenden Dokumentation:
[Aktualisierte Laravel-Dokumentation](https://laravel.com/docs/8.x/eloquent)
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3