mcpField
L
laravel-laravel-prompting-patterns

laravel-laravel-prompting-patterns

github.com/noartem开发1374 次安装2 周前更新
代码仓库

关于 laravel-laravel-prompting-patterns

laravel-laravel-prompting-patterns 是帮助开发者用 Laravel 术语描述开发需求的技能,适用于希望获得贴合框架惯用写法的 Laravel 开发者。它提供数据库、验证、API 和后台任务等场景的具体提示范例。

主要功能

  1. 01提供 Eloquent 查询与关系范例
  2. 02覆盖验证规则和自定义验证
  3. 03展示 RESTful API 资源模式
  4. 04说明队列、任务链与监控用法
  5. 05收录 Laravel 常用术语和模式

适用场景

  1. 01描述带预加载关系的数据库查询
  2. 02规划复杂表单或订单验证规则
  3. 03编写分页、筛选的 REST API 需求
  4. 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 解决方案。

评论

支持 Markdown