L
laravel:eloquent-relationships
About laravel:eloquent-relationships
A Laravel skill for modeling and loading Eloquent relationships. It covers constrained eager loading, relationship-based filtering, pivot operations, and aggregates.
Key features
- 01Eager loading with constraints
- 02Filter by related records
- 03Many-to-many pivot operations
- 04Relationship aggregates
- 05Scopes for recurring constraints
Use cases
- 01Load only matching related posts
- 02Filter models by related-record existence
- 03Replace many-to-many associations
- 04Include counts or sums for related records
Install
Copy the command and run it in a terminal.
$
npx skills add https:/ / github.com/ jpcaparas/ superpowers-laravel --skill laravel:eloquent-relationshipsAfter installing, type/laravel:eloquent-relationshipsin Claude Code to confirm it loaded.
Details
From the project READMEEloquent 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
- Laravel 13+: serialized Eloquent collections (e.g., in queued jobs) now restore eager-loaded relations after deserialization, matching single-model behavior — don't rely on relations being absent
- Laravel 13+: model-level attributes like
#[DateFormat('Y-m-d')]and#[WithoutTimestamps]are available (seelaravel:php-attributes)
Comments
Markdown supported