laravel-laravel-prompting-patterns

Original🇺🇸 English
Translated

Use Laravel-specific vocabulary—Eloquent patterns, Form Requests, API resources, jobs/queues—to get idiomatic framework code

7installs
Added on

NPX Install

npx skill4agent add noartem/laravel-vue-skills laravel-laravel-prompting-patterns

Tags

Translated version includes tags in frontmatter

Laravel Prompting Patterns

Use Laravel's vocabulary to get idiomatic code. Generic requests produce generic solutions that don't leverage the framework.

Database Operations

Generic

"Get all active users with their posts"

Laravel-Specific

"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)
"

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"

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
    "

Validation

Generic

"Validate the user input"

Laravel-Specific

"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"

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
    "

API Endpoints

Generic

"Create an API for products"

Laravel-Specific

"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"

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"

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"

Background Processing

Generic

"Send email after user registers"

Laravel-Specific

"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]
    "

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"

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."

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"

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.