Laravel
技术栈
后端框架
phpmvceloquentartisanbladefull-stack安装
1. 环境准备
- OS:Linux / macOS / Windows (WSL2 推荐)
- PHP:>= 8.1(Laravel 10),>= 8.2(Laravel 11)
- PHP 扩展:BCMath, Ctype, cURL, DOM, Fileinfo, JSON, Mbstring, OpenSSL, PCRE, PDO, Tokenizer, XML
- Composer:最新稳定版
- 数据库:MySQL 5.7+ / PostgreSQL 12+ / SQLite 3+ / SQL Server
- 可选:Node.js 16+(用于 Vite 前端构建)
2. 安装命令
通过 Composer 创建项目(推荐)
# 全局安装 Laravel 安装器
composer global require laravel/installer
# 创建新项目
laravel new my-app
# 或直接通过 Composer
composer create-project laravel/laravel my-app
启动开发服务器
cd my-app
php artisan serve
# 访问 http://localhost:8000
配置数据库
# 编辑 .env 文件
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=
# 运行迁移
php artisan migrate
3. 常见安装问题
权限问题
# Linux/macOS: 确保 storage 和 bootstrap/cache 可写
chmod -R 775 storage bootstrap/cache
Composer 内存不足
COMPOSER_MEMORY_LIMIT=-1 composer create-project laravel/laravel my-app
国内镜像加速
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
应用密钥未生成
php artisan key:generate
示例
Hello World:Laravel 路由与控制器
目标
创建一个 Laravel API 端点,展示路由定义、控制器和 JSON 响应。
完整代码
1. 创建控制器
php artisan make:controller HelloController
2. 编辑 app/Http/Controllers/HelloController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\JsonResponse;
class HelloController extends Controller
{
public function index(): JsonResponse
{
return response()->json([
'message' => 'Hello, Vibe!',
'framework' => 'Laravel',
'php_version' => PHP_VERSION,
'timestamp' => now()->toIso8601String(),
]);
}
public function greet(string $name): JsonResponse
{
return response()->json([
'message' => "Hello, {$name}!",
'powered_by' => 'Laravel',
]);
}
}
3. 编辑 routes/api.php
<?php
use App\Http\Controllers\HelloController;
use Illuminate\Support\Facades\Route;
Route::get('/hello', [HelloController::class, 'index']);
Route::get('/hello/{name}', [HelloController::class, 'greet']);
运行步骤
php artisan serve
预期输出
# 请求
curl http://localhost:8000/api/hello
# 响应
{
"message": "Hello, Vibe!",
"framework": "Laravel",
"php_version": "8.2.12",
"timestamp": "2024-01-01T00:00:00.000000Z"
}
# 带参数
curl http://localhost:8000/api/hello/World
# {"message": "Hello, World!", "powered_by": "Laravel"}
教程
Laravel 入门教程:从零构建一个 Task API
1. 背景
Laravel 是目前 PHP 生态最流行的框架。本教程带你从零搭建一个 RESTful Task API,学会路由、控制器、模型、迁移和 Eloquent ORM 的核心用法。
2. 前置概念
| 概念 | 说明 |
|---|---|
| 路由 (Route) | 将 URL 映射到控制器方法 |
| 控制器 (Controller) | 处理 HTTP 请求逻辑 |
| 模型 (Model) | Eloquent ORM 的数据实体 |
| 迁移 (Migration) | 数据库版本控制 |
| 中间件 (Middleware) | 请求过滤层 |
3. 分步操作
步骤一:创建项目
composer create-project laravel/laravel task-api
cd task-api
php artisan serve
步骤二:创建 Task 模型和迁移
php artisan make:model Task -m
编辑 database/migrations/xxxx_create_tasks_table.php:
Schema::create('tasks', function (Blueprint $table) {
$table->id();
$table->string('title');
$table->text('description')->nullable();
$table->enum('status', ['pending', 'in_progress', 'done'])->default('pending');
$table->timestamps();
});
运行迁移:
php artisan migrate
步骤三:编辑模型
app/Models/Task.php:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Task extends Model
{
use HasFactory;
protected $fillable = ['title', 'description', 'status'];
protected $casts = [
'status' => 'string',
];
}
步骤四:创建控制器
php artisan make:controller Api/TaskController
app/Http/Controllers/Api/TaskController.php:
<?php
namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller;
use App\Models\Task;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
class TaskController extends Controller
{
public function index(): JsonResponse
{
return response()->json(Task::all());
}
public function store(Request $request): JsonResponse
{
$validated = $request->validate([
'title' => 'required|string|max:255',
'description' => 'nullable|string',
]);
$task = Task::create($validated);
return response()->json($task, 201);
}
public function show(Task $task): JsonResponse
{
return response()->json($task);
}
public function update(Request $request, Task $task): JsonResponse
{
$validated = $request->validate([
'title' => 'sometimes|string|max:255',
'description' => 'nullable|string',
'status' => 'sometimes|in:pending,in_progress,done',
]);
$task->update($validated);
return response()->json($task);
}
public function destroy(Task $task): JsonResponse
{
$task->delete();
return response()->json(null, 204);
}
}
步骤五:注册 API 路由
routes/api.php:
Route::apiResource('tasks', \App\Http\Controllers\Api\TaskController::class);
4. 验证
# 创建
curl -X POST http://localhost:8000/api/tasks \
-H "Content-Type: application/json" \
-d '{"title":"学习 Laravel","description":"阅读官方文档"}'
# 列表
curl http://localhost:8000/api/tasks
# 更新
curl -X PUT http://localhost:8000/api/tasks/1 \
-H "Content-Type: application/json" \
-d '{"status":"done"}'
# 删除
curl -X DELETE http://localhost:8000/api/tasks/1
5. 思考题
- 如何为 Task 添加用户关联(多对一)?
- 如何使用
apiResource的except限制路由? - 如何自定义
404时的 JSON 响应格式?
参考资料
- [1] Laravel Team. Laravel Documentation. 2024. https://laravel.com/docs
- [2] Matt Stauffer. Laravel: Up & Running, 2nd Edition. 2019.
- [3] Arda Kılıçdağı, H. İbrahim Yılmaz. Laravel Design Patterns and Best Practices. 2014.