Heim > PHP-Framework > Laravel > Laravel5.2 Batch-Löschung

Laravel5.2 Batch-Löschung

王林
Freigeben: 2023-05-20 16:26:40
Original
647 Leute haben es durchsucht

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.

  1. Vorbereitung

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
Nach dem Login kopieren

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
Nach dem Login kopieren

Fügen Sie dann den folgenden Code im Post-Modell hinzu:

<?php

namespace App;

use IlluminateDatabaseEloquentModel;

class Post extends Model
{
    protected $fillable = ['title', 'content'];
}
Nach dem Login kopieren

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();
    }
}
Nach dem Login kopieren

Führen Sie abschließend den folgenden Befehl aus, um die Daten einzugeben:

php artisan migrate --seed
Nach dem Login kopieren
  1. Daten stapelweise löschen

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();
Nach dem Login kopieren

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();
Nach dem Login kopieren

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();
Nach dem Login kopieren

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();
Nach dem Login kopieren

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.

  1. Löschvorgang bestätigen

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
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage