laravel-laravel-prompting-patterns
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseLaravel 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 pivot table migration
post_tag - Add in Post model
belongsToMany - Add in Tag model
belongsToMany - Use ,
attach(),detach()for management"sync()
"在Post和Tag之间建立多对多关联:
- 创建中间表迁移
post_tag - 在Post模型中添加关联
belongsToMany - 在Tag模型中添加关联
belongsToMany - 使用、
attach()、detach()方法进行关联管理"sync()
Query Optimization
查询优化
"Avoid N+1 on the posts index:
- Eager load and
authorrelationshipscategory - Use for comment totals
withCount('comments') - Add database indexes on and
published_at"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 method"
messages()"创建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 for product IDs
Rule::exists('products', 'id') - Validate nested items array: must be integer, min 1
items.*.quantity - Use for conditional shipping address
Rule::requiredIf() - Add custom rule for inventory check: "
new HasSufficientStock
"验证订单创建请求:
- 使用验证产品ID合法性
Rule::exists('products', 'id') - 验证嵌套的items数组:必须为整数且最小值为1
items.*.quantity - 使用实现收货地址的条件必填
Rule::requiredIf() - 添加自定义规则检查库存是否充足"
new HasSufficientStock
API Endpoints
API接口
Generic
通用表述
"Create an API for products"
"创建产品API"
Laravel-Specific
Laravel专属表述
"Create RESTful product API:
- Resource controller: with apiResource routes
ProductController - Use for response transformation
ProductResource - Add for index endpoint with pagination
ProductCollection - Protect with Sanctum middleware:
auth:sanctum - Return 201 on create, 204 on delete
- Use and
ProductStoreRequestfor validation"ProductUpdateRequest
"创建RESTful风格的产品API:
- 生成资源控制器并配置apiResource路由
ProductController - 使用进行响应数据转换
ProductResource - 为列表接口创建以支持分页
ProductCollection - 使用Sanctum中间件保护接口:
auth:sanctum - 创建成功返回201状态码,删除成功返回204状态码
- 使用和
ProductStoreRequest进行请求验证"ProductUpdateRequest
Pagination
分页处理
"Paginate products API:
- Use in controller
Product::paginate(20) - Return with
ProductResource::collection($products) - Include meta: ,
total,per_page,current_pagelast_page - Support query parameter"
?page=2
"为产品API添加分页功能:
- 在控制器中使用
Product::paginate(20) - 通过返回分页数据
ProductResource::collection($products) - 包含元数据:、
total、per_page、current_pagelast_page - 支持查询参数"
?page=2
Filtering
筛选功能
"Add filtering to products API:
- Accept query params
?category=electronics&min_price=100 - Use for conditional queries
when() - Extract to class for reusability
ProductFilters - 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 interface
ShouldQueue - Add and
$tries = 3$timeout = 30 - Handle failure in method
failed() - 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 connection for payments queue
redis - Set
queue:work --queue=payments,default - Add to 90 seconds in config
retry_after - Monitor with Horizon dashboard"
"为支付处理配置队列:
- 使用连接作为支付队列的驱动
redis - 启动队列处理器:
queue:work --queue=payments,default - 在配置文件中设置为90秒
retry_after - 使用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 callback."
catch()"使用任务链处理订单流程:
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"
"Follow Laravel's Form Request Validation pattern"
"Use Laravel's API Resource pattern for response transformation"
"Configure queues per Laravel Queue docs"
"根据Laravel的Eloquent Relationships文档实现"
"遵循Laravel的Form Request Validation模式"
"使用Laravel的API Resource模式进行响应数据转换"
"根据Laravel Queue文档配置队列"
Pattern Catalog
模式目录
Models & Eloquent:
- Relationships: ,
hasMany,belongsTo,belongsToManymorphMany - Scopes: ,
scopeActivescopePublished - Accessors/Mutators: ,
get{Attribute}Attributeset{Attribute}Attribute - Casts:
protected $casts = ['published_at' => 'datetime']
Validation:
- Form Requests: ,
UserStoreRequestProductUpdateRequest - Rules: ,
required,unique:table,columnexists:table,column - Custom Rules: ,
new UppercaseRule::in(['admin', 'user'])
API:
- Resources: ,
UserResourceProductCollection - Pagination: ,
paginate(),simplePaginate()cursorPaginate() - Rate Limiting: middleware
throttle:60,1
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、belongsToManymorphMany - 作用域:、
scopeActivescopePublished - 访问器/修改器:、
get{Attribute}Attributeset{Attribute}Attribute - 类型转换:
protected $casts = ['published_at' => 'datetime']
验证:
- Form Requests:、
UserStoreRequestProductUpdateRequest - 规则:、
required、unique:table,columnexists:table,column - 自定义规则:、
new UppercaseRule::in(['admin', 'user'])
API:
- 资源:、
UserResourceProductCollection - 分页:、
paginate()、simplePaginate()cursorPaginate() - 限流:中间件
throttle:60,1
任务与队列:
- 任务:、
ShouldQueue、dispatch()dispatchSync() - 链式/批量调用:、
Bus::chain()Bus::batch() - Horizon:标签、监控、失败任务处理
使用Laravel的专属术语,获得Laravel风格的解决方案。