Laravel 5.2 ist ein modernes PHP-Framework, das von vielen Entwicklern geliebt wird. In Laravel ist das Hinzufügen, Löschen, Überprüfen und Ändern von Daten ein sehr häufiger Vorgang, und das Löschen von Stapeln ist keine Ausnahme. In diesem Artikel wird erläutert, wie Sie mit Laravel 5.2 Daten stapelweise löschen.
Bevor wir beginnen, müssen wir ein Beispielprojekt erstellen, um den Vorgang der Stapellöschung von Daten zu demonstrieren. Geben Sie den folgenden Befehl in die Befehlszeile ein:
laravel new batch-delete-example
Gehen Sie dann in das Projektverzeichnis und führen Sie den folgenden Befehl aus, um eine Datentabelle mit dem Namen posts zu erstellen:
php artisan make:model Post -m
Fügen Sie dann den folgenden Code im Post-Modell hinzu:
<?php namespace App; use IlluminateDatabaseEloquentModel; class Post extends Model { protected $fillable = ['title', 'content']; }
Im Populate Datei DatabaseSeeder.php Geben Sie einige Beispieldaten ein:
<?php use IlluminateDatabaseSeeder; class DatabaseSeeder extends Seeder { public function run() { factory(AppPost::class, 10)->create(); } }
Führen Sie abschließend den folgenden Befehl aus, um die Daten einzugeben:
php artisan migrate --seed
In Laravel können wir die von Eloquent bereitgestellte Löschmethode verwenden, um Datensätze zu löschen .
Wenn wir einen einzelnen Datensatz löschen möchten, können wir Folgendes tun:
$post = Post::find(1); $post->delete();
Aber was ist, wenn wir mehrere Datensätze stapelweise löschen möchten? Zu diesem Zeitpunkt können wir die Methode whereIn verwenden, die ein Array empfangen, die Datensätze abfragen kann, die die Bedingungen im angegebenen Feld erfüllen, und sie löschen kann.
Werfen wir zunächst einen Blick auf die grundlegende Syntax:
Post::whereIn('id', $ids)->delete();
Dabei ist $ids ein Array mit mehreren ID-Werten, die den ID-Wert des Datensatzes darstellen, den wir löschen möchten.
Wenn wir beispielsweise drei Datensätze mit den IDs 1, 3 und 5 löschen möchten, können wir Folgendes tun:
$ids = [1, 3, 5]; Post::whereIn('id', $ids)->delete();
Natürlich können wir Datensätze auch aufgrund anderer Bedingungen löschen. Wenn wir beispielsweise alle Datensätze löschen möchten, die vor 2022 erstellt wurden, können wir Folgendes tun:
Post::where('created_at', '<', '2022-01-01 00:00:00')->delete();
Es ist zu beachten, dass die Verwendung der whereIn-Methode automatisch in eine Löschanweisung umgewandelt wird, sodass nicht alle Datensätze abgerufen werden, die diese Anforderungen erfüllen Die Kriterien Und löschen Sie sie separat, löschen Sie diese Datensätze jedoch direkt auf Datenbankebene. Verwenden Sie es daher mit Vorsicht.
Wenn wir die Löschmethode zum Löschen von Datensätzen verwenden, stellt Laravel keinen Bestätigungsvorgang bereit, was bedeutet, dass der einmal ausgeführte Löschvorgang nicht mehr rückgängig gemacht werden kann.
Wenn wir den Löschvorgang des Benutzers bestätigen möchten, können wir am Frontend ein Bestätigungs-Popup-Fenster oder am Backend ein Bestätigungsfeld hinzufügen, damit der Benutzer bestätigen kann, ob er den Datensatz löschen möchte.
In diesem Artikel verwenden wir SweetAlert, um ein Bestätigungs-Popup zu erstellen.
Führen Sie zunächst den folgenden Befehl in der Befehlszeile aus, um SweetAlert zu installieren:
npm install sweetalert2
Dann fügen Sie die CSS- und JS-Dateien von SweetAlert in app.blade.php hinzu:
<!DOCTYPE html> <html> <head> <title>Laravel</title> <link rel="stylesheet" type="text/css" href="{{ asset('css/app.css') }}"> <link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/sweetalert2@10.16.0/dist/sweetalert2.min.css"> <script src="{{ asset('js/app.js') }}"></script> <script src="https://cdn.jsdelivr.net/npm/sweetalert2@10.16.0/dist/sweetalert2.min.js"></script> </head> <body> @yield('content') </body> </html>
Dann fügen Sie den folgenden Code in der Blade-Vorlage hinzu:
<form method="post" action="{{ route('posts.destroy', $post->id) }}" style="display: inline-block;"> @csrf @method('DELETE') <button type="submit" class="btn btn-danger btn-sm" onclick="event.preventDefault(); Swal.fire({ title: '确定删除吗?', icon: 'warning', showCancelButton: true, confirmButtonText: '确认删除', cancelButtonText: '取消' }).then((result) => { if (result.value) { this.parentElement.submit(); } });" >删除</button> </form>
Darin haben wir ein Ereignis für das Klicken auf die Schaltfläche „Löschen“ definiert, das ein Bestätigungs-Popup-Fenster öffnet, wenn der Benutzer auf die Schaltfläche „Löschen“ klickt. Wenn der Benutzer auf die Schaltfläche „Bestätigen“ klickt, übermittelt JavaScript das Formular und löscht den entsprechenden Datensatz.
Es ist zu beachten, dass wir in Form des Löschvorgangs @csrf und @method('DELETE') hinzugefügt haben. Dies liegt daran, dass der Löschvorgang in Laravel über die HTTP-DELETE-Methode und nur über den Browser übermittelt werden muss GET- und POST-Methoden werden unterstützt, daher müssen versteckte Eingaben verwendet werden, um die Anforderungsmethode anzugeben.
Sofern nicht erforderlich, sollten wir versuchen, die Verwendung von Stapellöschvorgängen zu vermeiden, da dies zu einem irreparablen Datenverlust führen kann. Wenn Sie einen einzelnen Datensatz löschen müssen, können Sie die von Eloquent bereitgestellte Löschmethode verwenden, die den Benutzer auffordert, den Löschvorgang zu bestätigen, bevor er den Datensatz löscht. Wenn Sie mehrere Datensätze löschen müssen, können Sie die Methode whereIn verwenden. Achten Sie jedoch darauf, diese vor der Verwendung zu bestätigen.
Das obige ist der detaillierte Inhalt vonLaravel5.2 Batch-Löschung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!