Laravel 开发指南,面向现代 Laravel 开发模式、最佳实践与工作流。资料以代码示例与命令片段为主,覆盖从模型关系、迁移工厂、表单验证、API 资源,到 Pest 测试、队列与 Horizon、缓存、路由、策略授权、异常处理、Blade 组件、性能建议与质量检查。
【运行器选择】 使用 Laravel Sail(Docker)时,命令前缀为 sail,例如:sail artisan <command>、sail composer <command>、sail npm <command>。不使用 Sail(本地 PHP)时,命令为 php artisan <command>、composer <command>、npm <command>。
【Eloquent 关系与加载】 避免 N+1 查询:使用 Post::with(['author', 'tags'])->get() 进行预加载;可做约束预加载,如 User::with(['posts' => fn($q) => $q->latest()->where('published', true)])->find($id);也支持 withCount('comments') 与 withSum('orders', 'total')。关系定义包括 belongsTo、belongsToMany、hasMany。中间表操作包含 sync、syncWithoutDetaching、attach、detach。
【迁移与工厂】 可创建迁移,如 make:migration create_posts_table;Schema::create 中可使用 id、foreignId()->constrained()->cascadeOnDelete()、string、text、enum、timestamp、timestamps、softDeletes 与 index。工厂示例包含 definition 与 published 状态方法,用法如 Post::factory()->count(10)->published()->create() 以及 for(User::factory()->admin())。
【表单请求与验证】 通过 FormRequest 实现 authorize 与 rules,可自定义 messages。控制器中使用 $request->validated() 创建记录并返回 JSON 响应。
【API 资源】 JsonResource 的 toArray 可输出字段、excerpt、whenLoaded 关系、whenCounted 计数与 ISO 时间。分页响应可结合 with、withCount、latest 与 paginate。
【使用 Pest 进行 TDD】 遵循 RED-GREEN-REFACTOR:先写失败测试,再写最小实现,最后重构。示例包含创建文章与拒绝空标题的断言,覆盖 assertCreated、assertJsonPath、assertDatabaseHas、assertUnprocessable、assertJsonValidationErrors。运行测试可使用 sail artisan test --parallel、指定文件或 --coverage --min=80。
【队列与 Horizon】 任务实现 ShouldQueue,可设置 tries、backoff、timeout,并提供 handle 与 failed。派发方式有 dispatch、onQueue、delay。Horizon 配置示例包含 environments 下 production 的 supervisor 设置。
【缓存】 使用 Cache::remember 做简单缓存;在 Redis 下可使用 Cache::tags 并配合模型事件 saved/deleted 刷新缓存。
【路由最佳实践】 api.php 中可用 auth:sanctum 中间件、apiResource、自定义路由、prefix 与 can 中间件。限流使用 throttle:api。
【策略与授权】 PostPolicy 可定义 view、update、delete,控制器中使用 $this->authorize('update', $post)。
【异常处理】 在 Handler 的 register 中通过 renderable 针对 ModelNotFoundException 与 AuthorizationException 返回 JSON 响应。
【质量检查】 可运行 Pint 代码风格、PHPStan 静态分析、PHP Insights 质量检查,或组合命令:pint && phpstan analyse && sail artisan test。
【Blade 组件】 支持组件类与匿名组件,组件类构造函数可含 type 与 message,Blade 中使用 <x-alert>;匿名组件使用 @props 与 $attributes->merge。
【性能建议】 使用预加载、选择特定列、大数据集分块、缓存昂贵查询、为常用查询列加索引、将重处理放入队列、生产环境启用 OPcache。
【适用场景与限制】 适用于使用 Laravel 构建 Web 应用与 API 的开发、测试与部署流程;示例基于 Laravel Sail、Redis、Horizon、Sanctum、Pest 等技术栈。资料未提供具体版本、安装步骤、收费信息、平台支持范围或效果保证,这些内容暂未提供。