mcpField
L
laravel:eloquent-relationships

laravel:eloquent-relationships

github.com/jpcaparasDevelopment157171 installsUpdated 17w ago
Repository

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

  1. 01Eager loading with constraints
  2. 02Filter by related records
  3. 03Many-to-many pivot operations
  4. 04Relationship aggregates
  5. 05Scopes for recurring constraints

Use cases

  1. 01Load only matching related posts
  2. 02Filter models by related-record existence
  3. 03Replace many-to-many associations
  4. 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-relationships

After installing, type/laravel:eloquent-relationshipsin Claude Code to confirm it loaded.

Details

From the project README

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
  • 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 (see laravel:php-attributes)

Comments

Markdown supported