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.