Define clear relationships and load data efficiently; prevent N+1, use constraints, counts/sums, and pivot syncing safely
Scanned 6/6/2026
Install via CLI
openskills install jpcaparas/superpowers-laravel---
name: laravel:eloquent-relationships
description: Define clear relationships and load data efficiently; prevent N+1, use constraints, counts/sums, and pivot syncing safely
---
# 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-loading` for N+1 detection and measurement
- Use `whereHas()` / `has()` to filter by related existence
- Prefer `withCount`, `withSum`, `withMax` for simple aggregates
- Apply global / local scopes for recurring constraints
- Keep relationship names consistent and pluralized where appropriate
No comments yet. Be the first to comment!