LA

laravel-eloquent

Optimizes Laravel database performance by preventing N+1 issues and enabling strict lazy-loading checks.

Install

mkdir -p .claude/skills/laravel-eloquent && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/11218" && unzip -o skill.zip -d .claude/skills/laravel-eloquent && rm skill.zip

Installs to .claude/skills/laravel-eloquent

Activation

This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.

Write performant Eloquent queries with eager loading, reusable scopes, and strict lazy-loading prevention in Laravel. Use when defining model relationships, creating query scopes, or processing large datasets with chunk/cursor.
227 chars✓ has a “when” trigger
Intermediate

Key capabilities

  • Prevent N+1 query issues
  • Define reusable query scopes
  • Process large datasets efficiently
  • Enforce strict lazy-loading prevention

How it works

It enforces eager loading and strict lazy-loading prevention while providing patterns for reusable query scopes.

Inputs & outputs

You give it
Model relationship or query requirements
You get back
Performant Eloquent query

When to use laravel-eloquent

  • Prevent N+1 query issues
  • Create reusable query scopes
  • Implement strict lazy-loading prevention
  • Process large datasets without memory exhaustion

About this skill

Laravel Eloquent

Priority: P0 (CRITICAL)

Workflow: Add Model with Safe Queries

  1. Define model — Set $fillable, $casts, and relationships.
  2. Enable strict loading — Call Model::preventLazyLoading(!app()->isProduction()) in AppServiceProvider.
  3. Add scopes — Create scopeActive(), scopeVerified() for reusable filters.
  4. Eager-load in queries — Use with() for all relationship access.
  5. Process large datasets — Use chunk() or cursor() instead of get().

Scope + Eager Loading Example

See implementation examples for model scopes, eager loading, and directory structure.

Implementation Guidelines

Query Efficiency & Performance

  • N+1 Prevention: Always use with() or $with for relationships. Never access relationship properties in loop without eager loading (N+1 Prevention).
  • Strict Loading: Call Model::preventLazyLoading(!app()->isProduction()) in AppServiceProvider::boot() to throw LazyLoadingViolationException in local/dev.
  • Large Datasets: Use chunk(), lazy(), or cursor() for processing many records without memory issues (Memory Efficiency).

Query Logic & Scopes

  • Reusable Scopes: Define scopeName(Builder $query): Builder methods in models for reusable query filters.
  • Chaining: Chain scopes (e.g., User::active()->verified()->get()) to keep controllers from duplicating query logic.

Models & Security

  • Mass Assignment: Always define protected $fillable array; use $request->validated() for Model::create().
  • Casting: Use protected $casts for dates, JSON, and custom types to ensure data consistency.

Anti-Patterns

  • No lazy loading: Eager-load with with() or $with; never in loops.
  • No business logic in Models: Move to Services or Actions.
  • No raw SQL strings: Use Query Builder or Eloquent methods.
  • No select *: Specify required columns to limit data transfer.

References

When not to use it

  • When lazy loading is explicitly required

Prerequisites

Laravel framework

Limitations

  • Requires Laravel Eloquent
  • Strict loading must be enabled in AppServiceProvider

How it compares

It mandates strict lazy-loading prevention in development, catching N+1 issues before they reach production.

Compared to similar skills

laravel-eloquent side by side with the closest alternatives in the catalog.

SkillInstallsUpdatedSafetyDifficulty
laravel-eloquent (this skill)02moNo flagsIntermediate
laravel-specialist123moNo flagsIntermediate
laravel-development03moNo flagsIntermediate
laravel-query-builder02moNo flagsIntermediate

Try saying

Example prompts that trigger this skill in your AI assistant.

Search skills

Search the agent skills registry