GlosarioBase de datos

¿Qué es Model?

Los Models en Laravel son clases Eloquent que representan tablas de la base de datos, permitiendo consultar, crear, actualizar y eliminar registros, ademas de definir relaciones, scopes y casteos de atributos.

Modelos Eloquent

Cada modelo Eloquent corresponde a una tabla de la base de datos y proporciona una interfaz orientada a objetos para interactuar con los datos. Los modelos son el corazon de la capa de datos en Laravel.

Definir un modelo

php artisan make:model Post -mfs  // Con migracion, factory y seeder
class Post extends Model
{
    protected $fillable = ['title', 'slug', 'body', 'published', 'published_at'];

    protected function casts(): array
    {
        return [
            'published' => 'boolean',
            'published_at' => 'datetime',
        ];
    }

    // Relaciones
    public function author(): BelongsTo
    {
        return $this->belongsTo(User::class, 'user_id');
    }

    public function tags(): BelongsToMany
    {
        return $this->belongsToMany(Tag::class);
    }

    // Scopes
    public function scopePublished(Builder $query): void
    {
        $query->where('published', true);
    }

    // Accessors
    protected function title(): Attribute
    {
        return Attribute::make(
            get: fn (string $value) => ucfirst($value),
        );
    }
}

Uso comun

$posts = Post::published()->with('author')->latest()->paginate(10);
$post = Post::findOrFail($id);
$post->update(['title' => 'Nuevo titulo']);
$post->delete(); // o $post->forceDelete() con SoftDeletes

Los modelos soportan soft deletes, eventos (creating, updating, deleting), observers, casteo de atributos a tipos PHP nativos y mucho mas.