laravel-eloquent-relationships

star 136

Define clear relationships and load data efficiently; prevent N+1, use constraints, counts/sums, and pivot syncing safely

jpcaparas By jpcaparas schedule Updated 11/4/2025

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
Install via CLI
npx skills add https://github.com/jpcaparas/superpowers-laravel --skill laravel-eloquent-relationships
Repository Details
star Stars 136
call_split Forks 0
navigation Branch main
article Path SKILL.md
More from Creator