> 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)
curl "https://skillshub.wtf/HoangNguyen0403/agent-skills-standard/laravel-eloquent?format=md"Laravel Eloquent
Priority: P0 (CRITICAL)
Workflow: Add a Model with Safe Queries
- Define model — Set
$fillable,$casts, and relationships. - Enable strict loading — Call
preventLazyLoading(!app()->isProduction())in AppServiceProvider. - Add scopes — Create
scopeActive(),scopeVerified()for reusable filters. - Eager-load in queries — Use
with()for all relationship access. - Process large datasets — Use
chunk()orcursor()instead ofget().
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$withfor relationships. Never access relationship properties in a loop without eager loading (N+1 Prevention). - Strict Loading: Call
Eloquent::preventLazyLoading(!app()->isProduction())inAppServiceProvider::boot()to throwLazyLoadingViolationExceptionin local/dev. - Large Datasets: Use
chunk(),lazy(), orcursor()for processing many records without memory issues (Memory Efficiency).
Query Logic & Scopes
- Reusable Scopes: Define
scopeName(Builder $query): Buildermethods 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 $fillablearray; use$request->validated()forModel::create(). - Casting: Use
protected $castsfor 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)