返回

Laravel框架批量删除调查问卷 功能详细步骤 超强教程快来看

前端

Laravel 问卷调查系统:批量删除功能的完整指南

简介

在建立问卷调查系统时,删除单个问卷可能很方便,但有时需要同时删除多个问卷。这就是批量删除功能的用武之地。Laravel 提供了一个简单的方法来实现批量删除,本文将逐步指导您完成在 Laravel 问卷调查系统中实现此功能的步骤。

1. 环境设置

要使用 Laravel 批量删除功能,您需要一个满足以下要求的环境:

  • PHP 7.4 或更高版本
  • MySQL 5.7 或更高版本
  • Composer

2. 创建新项目

使用 Composer 创建一个新的 Laravel 项目:

composer create-project laravel/laravel project-name

3. 安装依赖项

安装 Laravel 的 Eloquent 模型和路由:

composer require illuminate/database laravel/ui

4. 创建数据库迁移

生成一个数据库迁移文件来创建 news 表:

php artisan make:migration create_news_table

5. 配置迁移文件

create_news_table 迁移文件中添加以下代码:

public function up()
{
    Schema::create('news', function (Blueprint $table) {
        $table->id();
        $table->string('title');
        $table->text('content');
        $table->timestamps();
    });
}

6. 执行迁移

运行迁移命令以创建数据库表:

php artisan migrate

7. 创建模型

生成一个 Eloquent 模型 Newsnews 表进行交互:

php artisan make:model News

8. 创建控制器

生成一个控制器 NewsController 来处理问卷调查的 CRUD 操作:

php artisan make:controller NewsController --resource

9. 配置控制器

NewsController 中,修改 destroy 方法以支持批量删除:

public function destroy($id)
{
    News::find($id)->delete();

    return redirect()->route('news.index')
        ->with('success', '问卷调查删除成功!');
}

public function destroyMultiple(Request $request)
{
    $ids = $request->input('ids');

    News::whereIn('id', $ids)->delete();

    return redirect()->route('news.index')
        ->with('success', '批量删除问卷调查成功!');
}

10. 创建路由

web.php 中定义路由:

Route::resource('news', 'NewsController');

11. 创建视图

生成一个 Blade 模板 news.index 来显示问卷调查列表:

@extends('layouts.app')

@section('content')
    <div class="container">
        <div class="row">
            <div class="col-md-8">
                <h1>问卷调查系统</h1>
                <a href="{{ route('news.create') }}" class="btn btn-primary">添加新问卷调查</a>
                <br>
                <br>
                <form action="{{ route('news.destroyMultiple') }}" method="POST">
                    @csrf
                    <table class="table table-bordered table-striped">
                        <thead>
                            <tr>
                                <th><input type="checkbox" id="checkAll"></th>
                                <th>ID</th>
                                <th>标题</th>
                                <th>内容</th>
                                <th>操作</th>
                            </tr>
                        </thead>
                        <tbody>
                            @foreach ($news as $item)
                                <tr>
                                    <td><input type="checkbox" name="ids[]" value="{{ $item->id }}"></td>
                                    <td>{{ $item->id }}</td>
                                    <td>{{ $item->title }}</td>
                                    <td>{{ $item->content }}</td>
                                    <td>
                                        <a href="{{ route('news.edit', $item->id) }}" class="btn btn-warning">编辑</a>
                                        <a href="{{ route('news.destroy', $item->id) }}" class="btn btn-danger">删除</a>
                                    </td>
                                </tr>
                            @endforeach
                        </tbody>
                    </table>
                    <button type="submit" class="btn btn-danger">批量删除</button>
                </form>
            </div>
        </div>
    </div>
@endsection

12. 测试

导航至 http://localhost:8000/news 测试批量删除功能。选中要删除的问卷调查,然后单击“批量删除”按钮。

结论

通过遵循本指南,您可以在 Laravel 问卷调查系统中轻松实现批量删除功能。这将使您可以有效地管理大量问卷调查,并确保您的系统保持整洁有序。

常见问题解答

  1. 如何选择多个问卷调查进行删除?
    news.index 视图中,选中每个要删除的问卷调查旁边的复选框。

  2. 批量删除操作会永久删除问卷调查吗?
    是的,批量删除操作会永久删除所选问卷调查。

  3. 可以撤消批量删除操作吗?
    否,批量删除操作无法撤消。删除的问卷调查将从数据库中永久移除。

  4. 可以批量删除不同页面上的问卷调查吗?
    可以,只要您已在所有页面上选中要删除的问卷调查。

  5. 是否可以在批量删除时显示确认对话框?
    可以,在 NewsController 中添加 destroyMultiple 方法的确认对话框。