在几分钟内实施 CRUD 操作、排序、搜索、分页等

当前位置: 剧情吧 > php教程>
电视猫时间: 2025-01-08 10:33:19

  在几分钟内实施 CRUD 操作、排序、搜索、分页等

在 Laravel 中,可以使用以下步骤快速实现 CRUD 操作排序搜索、和分页功能。这是一个全面的指南,让您在几分钟内构建高效的系统。


1. 准备工作

  1. 安装 Laravel 如果尚未安装 Laravel 项目,请运行以下命令:

    composer create-project laravel/laravel crud-example
    cd crud-example
    php artisan serve
    
  2. 创建数据库 配置 .env 文件,连接到数据库:

    DB_DATABASE=your_database_name
    DB_USERNAME=your_username
    DB_PASSWORD=your_password
    
  3. 创建模型、迁移和控制器 假设我们构建一个“任务管理”应用,运行以下命令生成资源:

    php artisan make:model Task -mcr
    
    • -m:创建迁移。
    • -c:创建控制器。
    • -r:创建资源控制器。

2. 实施 CRUD 操作

2.1 数据库迁移

打开 database/migrations/xxxx_xx_xx_create_tasks_table.php 文件,定义 tasks 表结构:

Schema::create('tasks', function (Blueprint $table) {
    $table->id();
    $table->string('title');
    $table->text('description')->nullable();
    $table->timestamps();
});

运行迁移:

php artisan migrate

2.2 路由配置

routes/web.php 中注册资源路由:

use App\Http\Controllers\TaskController;

Route::resource('tasks', TaskController::class);

2.3 控制器逻辑

打开 app/Http/Controllers/TaskController.php,实现以下方法:

创建任务

public function create()
{
    return view('tasks.create');
}

public function store(Request $request)
{
    $validated = $request->validate([
        'title' => 'required|string|max:255',
        'description' => 'nullable|string',
    ]);

    Task::create($validated);
    return redirect()->route('tasks.index')->with('success', 'Task created successfully!');
}

显示任务列表

public function index(Request $request)
{
    $tasks = Task::query()
        ->when($request->search, function ($query, $search) {
            $query->where('title', 'like', "%{$search}%");
        })
        ->orderBy($request->get('sort', 'id'), $request->get('direction', 'desc'))
        ->paginate(10);

    return view('tasks.index', compact('tasks'));
}

编辑和更新任务

public function edit(Task $task)
{
    return view('tasks.edit', compact('task'));
}

public function update(Request $request, Task $task)
{
    $validated = $request->validate([
        'title' => 'required|string|max:255',
        'description' => 'nullable|string',
    ]);

    $task->update($validated);
    return redirect()->route('tasks.index')->with('success', 'Task updated successfully!');
}

删除任务

public function destroy(Task $task)
{
    $task->delete();
    return redirect()->route('tasks.index')->with('success', 'Task deleted successfully!');
}

3. 前端实现

3.1 任务列表视图

创建文件 resources/views/tasks/index.blade.php

@extends('layouts.app')

@section('content')
<div class="container">
    <h1>Task List</h1>

    <form method="GET" action="{{ route('tasks.index') }}">
        <input type="text" name="search" placeholder="Search..." value="{{ request('search') }}">
        <button type="submit">Search</button>
    </form>

    <table>
        <thead>
            <tr>
                <th><a href="{{ route('tasks.index', ['sort' => 'id', 'direction' => request('direction') == 'asc' ? 'desc' : 'asc']) }}">#</a></th>
                <th><a href="{{ route('tasks.index', ['sort' => 'title', 'direction' => request('direction') == 'asc' ? 'desc' : 'asc']) }}">Title</a></th>
                <th>Description</th>
                <th>Actions</th>
            </tr>
        </thead>
        <tbody>
            @foreach ($tasks as $task)
            <tr>
                <td>{{ $task->id }}</td>
                <td>{{ $task->title }}</td>
                <td>{{ $task->description }}</td>
                <td>
                    <a href="{{ route('tasks.edit', $task) }}">Edit</a>
                    <form action="{{ route('tasks.destroy', $task) }}" method="POST" style="display: inline-block;">
                        @csrf
                        @method('DELETE')
                        <button type="submit">Delete</button>
                    </form>
                </td>
            </tr>
            @endforeach
        </tbody>
    </table>

    {{ $tasks->links() }}
</div>
@endsection

3.2 创建和编辑视图

创建任务

创建文件 resources/views/tasks/create.blade.php

@extends('layouts.app')

@section('content')
<div class="container">
    <h1>Create Task</h1>
    <form action="{{ route('tasks.store') }}" method="POST">
        @csrf
        <div>
            <label for="title">Title</label>
            <input type="text" name="title" id="title" value="{{ old('title') }}">
        </div>
        <div>
            <label for="description">Description</label>
            <textarea name="description" id="description">{{ old('description') }}</textarea>
        </div>
        <button type="submit">Create</button>
    </form>
</div>
@endsection

编辑任务

创建文件 resources/views/tasks/edit.blade.php

@extends('layouts.app')

@section('content')
<div class="container">
    <h1>Edit Task</h1>
    <form action="{{ route('tasks.update', $task) }}" method="POST">
        @csrf
        @method('PUT')
        <div>
            <label for="title">Title</label>
            <input type="text" name="title" id="title" value="{{ old('title', $task->title) }}">
        </div>
        <div>
            <label for="description">Description</label>
            <textarea name="description" id="description">{{ old('description', $task->description) }}</textarea>
        </div>
        <button type="submit">Update</button>
    </form>
</div>
@endsection

4. 功能概述

  • CRUD 操作:已通过控制器和视图实现基本的创建、读取、更新和删除功能。
  • 排序:通过点击表头链接进行字段排序。
  • 搜索:通过 where 条件动态过滤结果。
  • 分页:使用 Laravel 的 paginate() 方法。

5. 最后步骤

  1. 确保迁移和填充数据:
    php artisan migrate:fresh --seed
    
  2. 启动服务器:
    php artisan serve
    
  3. 访问 http://localhost:8000/tasks 测试功能。

通过以上步骤,您已在 Laravel 中快速实现了 CRUD 操作、排序、搜索、分页,并确保代码结构清晰、易于扩展!

    最新电视剧
    热门电视剧
    影视资讯
    最新剧情排行榜
    最新电视剧剧情