Rumah > Artikel > rangka kerja php > pemadaman kelompok laravel5.2
Laravel 5.2 ialah rangka kerja PHP moden yang disukai oleh ramai pembangun. Dalam Laravel, menambah, memadam, menyemak dan mengubah suai data adalah operasi yang sangat biasa, dan pemadaman kelompok tidak terkecuali. Artikel ini akan memperkenalkan cara memadam data secara berkumpulan menggunakan Laravel 5.2.
Sebelum kita mula, kita perlu mencipta projek sampel untuk menunjukkan operasi pemadaman kelompok data. Masukkan arahan berikut dalam baris arahan:
laravel new batch-delete-example
Kemudian masukkan direktori projek dan jalankan arahan berikut untuk mencipta jadual data bernama jawatan:
php artisan make:model Post -m
Kemudian tambah kod berikut dalam model Post :
<?php namespace App; use IlluminateDatabaseEloquentModel; class Post extends Model { protected $fillable = ['title', 'content']; }
Isi beberapa sampel data dalam fail isian DatabaseSeeder.php:
<?php use IlluminateDatabaseSeeder; class DatabaseSeeder extends Seeder { public function run() { factory(AppPost::class, 10)->create(); } }
Akhirnya jalankan arahan berikut untuk mengisi data:
php artisan migrate --seed
Dalam Laravel, kita boleh menggunakan kaedah padam yang disediakan oleh Eloquent untuk memadam rekod.
Jika kita mahu memadamkan satu rekod, kita boleh melakukan ini:
$post = Post::find(1); $post->delete();
Tetapi bagaimana jika kita mahu memadamkan berbilang rekod dalam kelompok? Pada masa ini kita boleh menggunakan kaedah whereIn, yang boleh menerima tatasusunan, menanyakan rekod yang memenuhi syarat dalam medan yang ditentukan dan memadamkannya.
Mari kita lihat sintaks asas dahulu:
Post::whereIn('id', $ids)->delete();
Antaranya, $ids ialah tatasusunan yang mengandungi berbilang nilai id, mewakili nilai id rekod yang ingin kita padamkan.
Sebagai contoh, jika kita ingin memadamkan tiga rekod dengan ID 1, 3 dan 5, kita boleh melakukan ini:
$ids = [1, 3, 5]; Post::whereIn('id', $ids)->delete();
Sudah tentu, kita juga boleh memadamkan rekod berdasarkan syarat lain. Sebagai contoh, jika kita ingin memadamkan semua rekod yang dibuat lebih awal daripada 2022, kita boleh melakukan ini:
Post::where('created_at', '<', '2022-01-01 00:00:00')->delete();
Perlu diambil perhatian bahawa menggunakan kaedah whereIn akan ditukar secara automatik menjadi kenyataan padam, jadi ia tidak akan mendapatkan semula semua rekod yang memenuhi kriteria dan memadamnya secara individu Sebaliknya, rekod ini akan dipadamkan terus di peringkat pangkalan data, jadi gunakan dengan berhati-hati.
Apabila kami menggunakan kaedah padam untuk memadam rekod, Laravel tidak menyediakan operasi pengesahan, yang bermaksud bahawa sebaik sahaja operasi pemadaman dilakukan , ia tidak boleh dibuat asal.
Jika kami ingin mengesahkan operasi pemadaman pengguna, kami boleh menambah tetingkap pop timbul pengesahan di bahagian hadapan atau kotak pengesahan di bahagian belakang untuk membolehkan pengguna mengesahkan sama ada mereka mahu memadamkan rekod.
Dalam artikel ini, kami menggunakan SweetAlert untuk membuat pop timbul pengesahan.
Mula-mula, jalankan arahan berikut dalam baris arahan untuk memasang SweetAlert:
npm install sweetalert2
Kemudian tambahkan fail SweetAlert CSS dan JS dalam app.blade.php:
<!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>
Kemudian dalam Tambah kod berikut pada templat bilah:
<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>
Di dalamnya, kami menentukan acara untuk mengklik butang padam, yang akan muncul tetingkap timbul pengesahan apabila pengguna mengklik butang padam. Jika pengguna mengklik butang sahkan, JavaScript menyerahkan borang dan memadam rekod yang sepadan.
Perlu diambil perhatian bahawa dalam bentuk operasi pemadaman, kami menambah @csrf dan @method('DELETE') Ini kerana operasi pemadaman dalam Laravel perlu diserahkan melalui kaedah HTTP DELETE. Penyemak imbas hanya menyokong kaedah GET dan POST, jadi anda perlu menggunakan input tersembunyi untuk menentukan kaedah permintaan.
Melainkan perlu, kita harus cuba mengelak daripada menggunakan operasi pemadaman pukal, kerana ia boleh menyebabkan kehilangan data yang tidak boleh diperbaiki. Jika anda perlu memadamkan satu rekod, anda boleh menggunakan kaedah padam yang disediakan oleh Eloquent, yang akan meminta pengguna mengesahkan pemadaman sebelum memadamkan rekod. Jika anda perlu memadamkan berbilang rekod, anda boleh menggunakan kaedah whereIn, tetapi berhati-hati untuk mengesahkan sebelum digunakan.
Atas ialah kandungan terperinci pemadaman kelompok laravel5.2. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!