关于 laravel-laravel-prompting-patterns
laravel-laravel-prompting-patterns 是帮助开发者用 Laravel 术语描述开发需求的技能,适用于希望获得贴合框架惯用写法的 Laravel 开发者。它提供数据库、验证、API 和后台任务等场景的具体提示范例。
主要功能
- 01提供 Eloquent 查询与关系范例
- 02覆盖验证规则和自定义验证
- 03展示 RESTful API 资源模式
- 04说明队列、任务链与监控用法
- 05收录 Laravel 常用术语和模式
适用场景
- 01描述带预加载关系的数据库查询
- 02规划复杂表单或订单验证规则
- 03编写分页、筛选的 REST API 需求
- 04指定队列任务及失败处理方式
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ noartem/ skills --skill laravel-laravel-prompting-patterns安装后在 Claude Code 中输入/laravel-laravel-prompting-patterns确认已加载。
详细介绍
Laravel 提示模式
使用 Laravel 的术语,才能获得符合惯例的代码。泛泛的请求只会产生泛泛的解决方案,无法充分利用框架。
数据库操作
通用请求
“获取所有活跃用户及其帖子”
Laravel 专属请求
“使用 Eloquent 查询活跃用户,并预加载帖子:
User::where('active', true)
->with('posts')
->get();
为 User 模型添加一个作用域:scopeActive($query)”
关系
“在 Posts 和 Tags 之间建立多对多关系:
- 创建
post_tag中间表迁移 - 在 Post 模型中添加
belongsToMany - 在 Tag 模型中添加
belongsToMany - 使用
attach()、detach()、sync()进行管理”
查询优化
“避免帖子索引页出现 N+1 查询:
- 预加载
author和category关系 - 使用
withCount('comments')获取评论总数 - 为
published_at和category_id添加数据库索引”
验证
通用请求
“验证用户输入”
Laravel 专属请求
“创建带有验证规则的 UserStoreRequest:
public function rules(): array
{
return [
'email' => ['required', 'email', 'unique:users,email'],
'password' => ['required', 'min:12', Password::defaults()],
'name' => ['required', 'string', 'max:255'],
];
}
在 messages() 方法中添加自定义错误消息”
复杂验证
“验证订单创建:
- 使用
Rule::exists('products', 'id')验证产品 ID - 验证嵌套的 items 数组:
items.*.quantity必须是整数,且至少为 1 - 使用
Rule::requiredIf()验证条件性收货地址 - 添加库存检查自定义规则:
new HasSufficientStock”
API 端点
通用请求
“为产品创建一个 API”
Laravel 专属请求
“创建符合 RESTful 风格的产品 API:
- 资源控制器:使用 apiResource 路由的
ProductController - 使用
ProductResource转换响应 - 为索引端点添加带分页的
ProductCollection - 使用 Sanctum 中间件保护:
auth:sanctum - 创建时返回 201,删除时返回 204
- 使用
ProductStoreRequest和ProductUpdateRequest进行验证”
分页
“为产品 API 添加分页:
- 在控制器中使用
Product::paginate(20) - 使用
ProductResource::collection($products)返回结果 - 包含元数据:
total、per_page、current_page、last_page - 支持
?page=2查询参数”
筛选
“为产品 API 添加筛选功能:
- 接受
?category=electronics&min_price=100查询参数 - 使用
when()执行条件查询 - 提取到
ProductFilters类中以便复用 - 在 API 文档中说明查询参数”
后台处理
通用请求
“用户注册后发送电子邮件”
Laravel 专属请求
“在注册后派发 SendWelcomeEmail 任务:
SendWelcomeEmail::dispatch($user)
->onQueue('emails')
->delay(now()->addMinutes(5));
- 实现
ShouldQueue接口 - 添加
$tries = 3和$timeout = 30 - 在
failed()方法中处理失败 - 为任务添加 Horizon 标签:
$tags = ['user:'.$user->id]”
队列配置
“为支付处理配置队列:
- 支付队列使用
redis连接 - 设置
queue:work --queue=payments,default - 在配置中将
retry_after设为 90 秒 - 使用 Horizon 仪表板监控”
任务链
“使用任务链处理订单:
Bus::chain([
new ValidateInventory($order),
new ChargePayment($order),
new SendConfirmation($order),
])->dispatch();
如果任何任务失败,链条就会停止。在 catch() 回调中处理。”
引用文档
有效引用
“按照 Laravel 的 Eloquent 关系文档 实现”
“遵循 Laravel 的 Form Request 验证模式”
“使用 Laravel 的 API Resource 模式转换响应”
“根据 Laravel 队列文档 配置队列”
模式目录
模型与 Eloquent:
- 关系:
hasMany、belongsTo、belongsToMany、morphMany - 作用域:
scopeActive、scopePublished - 访问器/修改器:
get{Attribute}Attribute、set{Attribute}Attribute - 类型转换:
protected $casts = ['published_at' => 'datetime']
验证:
- 表单请求:
UserStoreRequest、ProductUpdateRequest - 规则:
required、unique:table,column、exists:table,column - 自定义规则:
new Uppercase、Rule::in(['admin', 'user'])
API:
- 资源:
UserResource、ProductCollection - 分页:
paginate()、simplePaginate()、cursorPaginate() - 速率限制:
throttle:60,1中间件
任务与队列:
- 任务:
ShouldQueue、dispatch()、dispatchSync() - 链:
Bus::chain()、Bus::batch() - Horizon:标签、监控、失败任务处理
使用 Laravel 术语。获取 Laravel 解决方案。