> laravel-eloquent

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. (triggers: app/Models/**/*.php, scope, with, eager, chunk, model)

fetch
$curl "https://skillshub.wtf/HoangNguyen0403/agent-skills-standard/laravel-eloquent?format=md"
SKILL.mdlaravel-eloquent

Laravel Eloquent

Priority: P0 (CRITICAL)

Workflow: Add a Model with Safe Queries

  1. Define model — Set $fillable, $casts, and relationships.
  2. Enable strict loading — Call 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 a loop without eager loading (N+1 Prevention).
  • Strict Loading: Call Eloquent::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

> related_skills --same-repo

> common-store-changelog

Generate user-facing release notes for the Apple App Store and Google Play Store by collecting git history, triaging user-impacting changes, and drafting store-compliant changelogs. Enforces character limits (App Store ≤4000, Google Play ≤500), tone, and bullet format. Use when generating release notes, app store changelog, play store release, what's new, or version release notes for any mobile app. (triggers: generate changelog, app store notes, play store release, what's new, release notes, ve

> golang-tooling

Go developer toolchain — gopls LSP diagnostics, linting, formatting, and vet. Use when setting up Go tooling, running linters, or integrating gopls with Claude Code. (triggers: gopls, golangci-lint, golangci.yml, go vet, goimports, staticcheck, go tooling, go lint)

> common-ui-design

Design distinctive, production-grade frontend UI with bold aesthetic choices. Use when building web components, pages, interfaces, dashboards, or applications in any framework (React, Next.js, Angular, Vue, HTML/CSS). (triggers: build a page, create a component, design a dashboard, landing page, UI for, build a layout, make it look good, improve the design, build UI, create interface, design screen)

> common-owasp

OWASP Top 10 audit checklist for Web Applications (2021) and APIs (2023). Load during any security review, PR review, or codebase audit touching web, mobile backend, or API code. (triggers: security review, OWASP, broken access control, IDOR, BOLA, injection, broken auth, API review, authorization, access control)

┌ stats

installs/wk0
░░░░░░░░░░
github stars452
██████████
first seenMar 17, 2026
└────────────

┌ repo

HoangNguyen0403/agent-skills-standard
by HoangNguyen0403
└────────────

┌ tags

└────────────