laravel-laravel-prompting-patterns

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Laravel Prompting Patterns

Laravel 提示词模式

Use Laravel's vocabulary to get idiomatic code. Generic requests produce generic solutions that don't leverage the framework.
使用Laravel的专属术语来编写符合框架风格的代码。通用的请求会生成无法充分利用框架特性的通用解决方案。

Database Operations

数据库操作

Generic

通用表述

"Get all active users with their posts"
"获取所有活跃用户及其帖子"

Laravel-Specific

Laravel专属表述

"Query active users with eager-loaded posts using Eloquent:
php
User::where('active', true)
    ->with('posts')
    ->get();
Add a scope to User model:
scopeActive($query)
"
"使用Eloquent查询关联加载帖子的活跃用户:
php
User::where('active', true)
    ->with('posts')
    ->get();
为User模型添加作用域:
scopeActive($query)
"

Relationships

关联关系

"Set up a many-to-many relationship between Posts and Tags:
  • Create
    post_tag
    pivot table migration
  • Add
    belongsToMany
    in Post model
  • Add
    belongsToMany
    in Tag model
  • Use
    attach()
    ,
    detach()
    ,
    sync()
    for management"
"在Post和Tag之间建立多对多关联:
  • 创建
    post_tag
    中间表迁移
  • 在Post模型中添加
    belongsToMany
    关联
  • 在Tag模型中添加
    belongsToMany
    关联
  • 使用
    attach()
    detach()
    sync()
    方法进行关联管理"

Query Optimization

查询优化

"Avoid N+1 on the posts index:
  • Eager load
    author
    and
    category
    relationships
  • Use
    withCount('comments')
    for comment totals
  • Add database indexes on
    published_at
    and
    category_id
    "
"避免帖子列表页的N+1查询问题:
  • 预加载
    author
    category
    关联关系
  • 使用
    withCount('comments')
    获取评论总数
  • published_at
    category_id
    字段添加数据库索引"

Validation

验证处理

Generic

通用表述

"Validate the user input"
"验证用户输入"

Laravel-Specific

Laravel专属表述

"Create UserStoreRequest with validation rules:
php
public function rules(): array
{
    return [
        'email' => ['required', 'email', 'unique:users,email'],
        'password' => ['required', 'min:12', Password::defaults()],
        'name' => ['required', 'string', 'max:255'],
    ];
}
Add custom error messages in
messages()
method"
"创建UserStoreRequest并定义验证规则:
php
public function rules(): array
{
    return [
        'email' => ['required', 'email', 'unique:users,email'],
        'password' => ['required', 'min:12', Password::defaults()],
        'name' => ['required', 'string', 'max:255'],
    ];
}
messages()
方法中添加自定义错误提示信息"

Complex Validation

复杂验证

"Validate order creation:
  • Use
    Rule::exists('products', 'id')
    for product IDs
  • Validate nested items array:
    items.*.quantity
    must be integer, min 1
  • Use
    Rule::requiredIf()
    for conditional shipping address
  • Add custom rule for inventory check:
    new HasSufficientStock
    "
"验证订单创建请求:
  • 使用
    Rule::exists('products', 'id')
    验证产品ID合法性
  • 验证嵌套的items数组:
    items.*.quantity
    必须为整数且最小值为1
  • 使用
    Rule::requiredIf()
    实现收货地址的条件必填
  • 添加自定义规则
    new HasSufficientStock
    检查库存是否充足"

API Endpoints

API接口

Generic

通用表述

"Create an API for products"
"创建产品API"

Laravel-Specific

Laravel专属表述

"Create RESTful product API:
  • Resource controller:
    ProductController
    with apiResource routes
  • Use
    ProductResource
    for response transformation
  • Add
    ProductCollection
    for index endpoint with pagination
  • Protect with Sanctum middleware:
    auth:sanctum
  • Return 201 on create, 204 on delete
  • Use
    ProductStoreRequest
    and
    ProductUpdateRequest
    for validation"
"创建RESTful风格的产品API:
  • 生成资源控制器
    ProductController
    并配置apiResource路由
  • 使用
    ProductResource
    进行响应数据转换
  • 为列表接口创建
    ProductCollection
    以支持分页
  • 使用Sanctum中间件保护接口:
    auth:sanctum
  • 创建成功返回201状态码,删除成功返回204状态码
  • 使用
    ProductStoreRequest
    ProductUpdateRequest
    进行请求验证"

Pagination

分页处理

"Paginate products API:
  • Use
    Product::paginate(20)
    in controller
  • Return with
    ProductResource::collection($products)
  • Include meta:
    total
    ,
    per_page
    ,
    current_page
    ,
    last_page
  • Support
    ?page=2
    query parameter"
"为产品API添加分页功能:
  • 在控制器中使用
    Product::paginate(20)
  • 通过
    ProductResource::collection($products)
    返回分页数据
  • 包含元数据:
    total
    per_page
    current_page
    last_page
  • 支持
    ?page=2
    查询参数"

Filtering

筛选功能

"Add filtering to products API:
  • Accept
    ?category=electronics&min_price=100
    query params
  • Use
    when()
    for conditional queries
  • Extract to
    ProductFilters
    class for reusability
  • Document query params in API docs"
"为产品API添加筛选功能:
  • 接收
    ?category=electronics&min_price=100
    查询参数
  • 使用
    when()
    方法实现条件查询
  • 将筛选逻辑提取到
    ProductFilters
    类中以实现复用
  • 在API文档中记录查询参数"

Background Processing

后台任务处理

Generic

通用表述

"Send email after user registers"
"用户注册后发送邮件"

Laravel-Specific

Laravel专属表述

"Dispatch SendWelcomeEmail job after registration:
php
SendWelcomeEmail::dispatch($user)
    ->onQueue('emails')
    ->delay(now()->addMinutes(5));
  • Implement
    ShouldQueue
    interface
  • Add
    $tries = 3
    and
    $timeout = 30
  • Handle failure in
    failed()
    method
  • Tag job for Horizon:
    $tags = ['user:'.$user->id]
    "
"用户注册后分发SendWelcomeEmail任务:
php
SendWelcomeEmail::dispatch($user)
    ->onQueue('emails')
    ->delay(now()->addMinutes(5));
  • 实现
    ShouldQueue
    接口
  • 设置
    $tries = 3
    $timeout = 30
  • failed()
    方法中处理任务失败逻辑
  • 为Horizon添加任务标签:
    $tags = ['user:'.$user->id]
    "

Queue Configuration

队列配置

"Configure queue for payment processing:
  • Use
    redis
    connection for payments queue
  • Set
    queue:work --queue=payments,default
  • Add
    retry_after
    to 90 seconds in config
  • Monitor with Horizon dashboard"
"为支付处理配置队列:
  • 使用
    redis
    连接作为支付队列的驱动
  • 启动队列处理器:
    queue:work --queue=payments,default
  • 在配置文件中设置
    retry_after
    为90秒
  • 使用Horizon仪表盘监控队列"

Job Chaining

任务链式调用

"Process order with job chain:
php
Bus::chain([
    new ValidateInventory($order),
    new ChargePayment($order),
    new SendConfirmation($order),
])->dispatch();
If any job fails, chain stops. Handle in
catch()
callback."
"使用任务链处理订单流程:
php
Bus::chain([
    new ValidateInventory($order),
    new ChargePayment($order),
    new SendConfirmation($order),
])->dispatch();
如果任意任务失败,链式调用会终止。在
catch()
回调中处理失败情况。"

Referencing Documentation

参考文档

Effective References

有效参考方式

"Implement according to Laravel's Eloquent Relationships docs"
"Use Laravel's API Resource pattern for response transformation"
"Configure queues per Laravel Queue docs"
"根据Laravel的Eloquent Relationships文档实现"
"使用Laravel的API Resource模式进行响应数据转换"
"根据Laravel Queue文档配置队列"

Pattern Catalog

模式目录

Models & Eloquent:
  • Relationships:
    hasMany
    ,
    belongsTo
    ,
    belongsToMany
    ,
    morphMany
  • Scopes:
    scopeActive
    ,
    scopePublished
  • Accessors/Mutators:
    get{Attribute}Attribute
    ,
    set{Attribute}Attribute
  • Casts:
    protected $casts = ['published_at' => 'datetime']
Validation:
  • Form Requests:
    UserStoreRequest
    ,
    ProductUpdateRequest
  • Rules:
    required
    ,
    unique:table,column
    ,
    exists:table,column
  • Custom Rules:
    new Uppercase
    ,
    Rule::in(['admin', 'user'])
API:
  • Resources:
    UserResource
    ,
    ProductCollection
  • Pagination:
    paginate()
    ,
    simplePaginate()
    ,
    cursorPaginate()
  • Rate Limiting:
    throttle:60,1
    middleware
Jobs & Queues:
  • Jobs:
    ShouldQueue
    ,
    dispatch()
    ,
    dispatchSync()
  • Chains:
    Bus::chain()
    ,
    Bus::batch()
  • Horizon: Tags, monitoring, failed job handling
Use Laravel's vocabulary. Get Laravel solutions.
模型与Eloquent:
  • 关联关系:
    hasMany
    belongsTo
    belongsToMany
    morphMany
  • 作用域:
    scopeActive
    scopePublished
  • 访问器/修改器:
    get{Attribute}Attribute
    set{Attribute}Attribute
  • 类型转换:
    protected $casts = ['published_at' => 'datetime']
验证:
  • Form Requests:
    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风格的解决方案。