O Eloquent ORM é a ferramenta de mapeamento objeto-relacional (ORM) do Laravel. Com ele, podemos interagir com o banco de dados usando PHP puro, de forma simples, elegante e orientada a objetos.
Neste artigo, você aprenderá como usar o Eloquent para realizar as quatro operações básicas conhecidas como CRUD: Create (criar), Read (ler), Update (atualizar) e Delete (apagar).
O que é um ORM?
ORM significa Object-Relational Mapping. É uma técnica que permite manipular tabelas de banco de dados como se fossem objetos em PHP.
No Laravel, isso é feito através do Eloquent, que representa cada tabela como uma classe e cada linha como um objeto.
Pré-requisitos
Antes de começar, certifique-se de ter:
- Laravel instalado
- Banco de dados configurado corretamente (
.env
) - Uma migration e um model criados
Vamos usar como exemplo uma tabela chamada posts
.
Ler também: como verificar a versão do laravel
Criando a Migration e o Model
php artisan make:model Post -m
Abra o arquivo da migration gerado em database/migrations/
e defina os campos da tabela:
public function up(): void
{
Schema::create('posts', function (Blueprint $table) {
$table->id();
$table->string('title');
$table->text('content');
$table->timestamps();
});
}
Execute a migration:
php artisan migrate
🟢 Create (Criar)
Para criar um novo post, basta usar o método create()
ou preencher o objeto e usar save()
.
Usando create()
:
use App\Models\Post;
Post::create([
'title' => 'Meu primeiro post',
'content' => 'Conteúdo incrível aqui!'
]);
Importante: Para usar o create()
, o model Post
precisa ter o atributo fillable
definido:
// App\Models\Post.php
protected $fillable = ['title', 'content'];
Read (Ler)
Você pode recuperar dados de várias maneiras com Eloquent:
Listar todos os posts:
$posts = Post::all();
Encontrar um post pelo ID:
$post = Post::find(1);
Filtrar com condições:
$posts = Post::where('title', 'like', '%primeiro%')->get();
Update (Atualizar)
Você pode atualizar registros encontrando-os e usando o método update()
ou alterando os atributos manualmente.
Atualizando com update()
:
$post = Post::find(1);
$post->update([
'title' => 'Título atualizado',
'content' => 'Novo conteúdo aqui.'
]);
Ou manualmente:
$post = Post::find(1);
$post->title = 'Outro título';
$post->save();
Delete (apagar)
Para deletar um registro, use delete()
:
$post = Post::find(1);
$post->delete();
Ou diretamente com destroy()
:
Post::destroy(1);
Dica: Usando Tinker para testar
Você pode testar tudo isso no terminal usando o Tinker:
php artisan tinker
Exemplo no Tinker:
Post::create(['title' => 'Post via Tinker', 'content' => 'Conteúdo rápido']);
Conclusão
O Eloquent ORM é uma ferramenta poderosa e simples de usar. Com poucas linhas de código, conseguimos fazer operações completas no banco de dados sem escrever SQL manualmente.