laravel:eloquent-relationships
Eloquent Relationships and Loading
Model relationships express your domain; load only what you need.
Commands
# Typical loading
Post::with(['author', 'tags'])->withCount('comments')->paginate(20);
# Constrained eager loading
User::with(['posts' => fn($q) => $q->latest()->where('published', true)])->find($id);
# Pivot ops (many-to-many)
$post->tags()->sync([1,2,3]); // atomic replace
$post->tags()->syncWithoutDetaching([4]);
# Chunking large reads
Order::where('status', 'open')->lazy()->each(fn($o) => ...);
Patterns
- See
laravel:performance-eager-loadingfor N+1 detection and measurement - Use
whereHas()/has()to filter by related existence - Prefer
withCount,withSum,withMaxfor simple aggregates - Apply global / local scopes for recurring constraints
- Keep relationship names consistent and pluralized where appropriate
More from jpcaparas/superpowers-laravel
laravel:routes-best-practices
Keep routes clean and focused on mapping requests to controllers; avoid business logic, validation, or database operations in route files
89laravel:blade-components-and-layouts
Compose UIs with Blade components, slots, and layouts; keep templates pure and testable
89laravel:quality-checks
Unified quality gates for Laravel projects; Pint, static analysis (PHPStan/Psalm), Insights (optional), and JS linters; Sail and non-Sail pairs provided
80laravel:performance-caching
Use framework caches and value/query caching to reduce work; add tags, locks, and explicit invalidation strategies for correctness
77laravel:queues-and-horizon
Operate and verify queues with or without Horizon; safe worker flags, failure handling, and test strategies
75laravel:tdd-with-pest
Apply RED-GREEN-REFACTOR with Pest or PHPUnit; use factories, feature tests for HTTP, and parallel test runners; verify failures before implementation
75