Back to Skills

laravel-eloquent

verified

Master Eloquent ORM with relationships, scopes, casts, observers, and query optimization. Use when creating models, defining relationships, writing queries, or optimizing database access.

View on GitHub

Marketplace

fusengine-plugins

fusengine/agents

Plugin

fuse-laravel

development

Repository

fusengine/agents

plugins/laravel-expert/skills/laravel-eloquent/SKILL.md

Last Verified

January 22, 2026

Install Skill

Select agents to install to:

Scope:
npx add-skill https://github.com/fusengine/agents/blob/main/plugins/laravel-expert/skills/laravel-eloquent/SKILL.md -a claude-code --skill laravel-eloquent

Installation paths:

Claude
.claude/skills/laravel-eloquent/
Powered by add-skill CLI

Instructions

# Laravel Eloquent ORM

## Documentation

### Eloquent Core
- [eloquent.md](docs/eloquent.md) - Eloquent ORM basics
- [eloquent-relationships.md](docs/eloquent-relationships.md) - Relationships
- [eloquent-collections.md](docs/eloquent-collections.md) - Eloquent collections
- [eloquent-mutators.md](docs/eloquent-mutators.md) - Accessors, mutators & casting
- [eloquent-serialization.md](docs/eloquent-serialization.md) - Serialization
- [eloquent-factories.md](docs/eloquent-factories.md) - Model factories
- [eloquent-resources.md](docs/eloquent-resources.md) - API Resources

### Collections & Search
- [collections.md](docs/collections.md) - Laravel collections
- [scout.md](docs/scout.md) - Full-text search

## Model Template

```php
<?php

declare(strict_types=1);

namespace App\Models;

final class Post extends Model
{
    protected $fillable = ['title', 'slug', 'content', 'user_id'];

    protected function casts(): array
    {
        return [
            'status' => PostStatus::class,
            'published_at' => 'datetime',
        ];
    }

    public function user(): BelongsTo
    {
        return $this->belongsTo(User::class);
    }

    public function scopePublished(Builder $query): Builder
    {
        return $query->where('status', PostStatus::Published);
    }
}
```

## Query Optimization

```php
// Eager loading (prevent N+1)
$posts = Post::with(['user', 'comments.user'])->get();

// Chunking for large datasets
User::chunk(100, function ($users) {
    foreach ($users as $user) { }
});
```

Validation Details

Front Matter
Required Fields
Valid Name Format
Valid Description
Has Sections
Allowed Tools
Instruction Length:
1413 chars