在几分钟内实施 CRUD 操作、排序、搜索、分页等
在 Laravel 中,可以使用以下步骤快速实现 CRUD 操作、排序、搜索、和分页功能。这是一个全面的指南,让您在几分钟内构建高效的系统。
安装 Laravel 如果尚未安装 Laravel 项目,请运行以下命令:
composer create-project laravel/laravel crud-example
cd crud-example
php artisan serve
创建数据库 配置 .env 文件,连接到数据库:
DB_DATABASE=your_database_name
DB_USERNAME=your_username
DB_PASSWORD=your_password
创建模型、迁移和控制器 假设我们构建一个“任务管理”应用,运行以下命令生成资源:
php artisan make:model Task -mcr
-m:创建迁移。-c:创建控制器。-r:创建资源控制器。打开 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
在 routes/web.php 中注册资源路由:
use App\Http\Controllers\TaskController;
Route::resource('tasks', TaskController::class);
打开 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!');
}
创建文件 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
创建文件 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
where 条件动态过滤结果。paginate() 方法。
php artisan migrate:fresh --seed
php artisan serve
通过以上步骤,您已在 Laravel 中快速实现了 CRUD 操作、排序、搜索、分页,并确保代码结构清晰、易于扩展!
2025 年陆剧市场依旧热度爆棚
时间:2025-09-19
阵地央一首播:年度高品质大剧,深度解锁文化抗战三重非凡意义
时间:2025-09-18
陈展鹏刘佩玥《巨塔之后》今首播
时间:2025-08-28
生万物大结局惊现最招恨角色,原来真正的坏都披着善的“羊皮”!
时间:2025-08-28
归队6集燃爆:袁姗姗化身“战地玫瑰”,实战军医双在线超吸睛!
时间:2025-08-28
许凯田曦薇新剧《子夜归》首播,点击率位列第七
时间:2025-08-21