Dominando o Eloquent ORM: O Guia Completo
Guia completo para dominar o Eloquent ORM, a ferramenta de gerenciamento de banco de dados do Laravel
InSkillCoach
Dominando o Eloquent ORM: O Guia Completo
O Eloquent ORM é um dos componentes mais poderosos do Laravel. Ele simplifica consideravelmente a interação com o banco de dados, permitindo manipular os dados como objetos PHP.
Os fundamentos do Eloquent
Criação de um model
php artisan make:model User -m
Estrutura de um model básico
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
protected $fillable = ['name', 'email', 'password'];
protected $hidden = ['password'];
}
Relacionamentos com o Eloquent
One-to-One
public function profile()
{
return $this->hasOne(Profile::class);
}
One-to-Many
public function posts()
{
return $this->hasMany(Post::class);
}
Many-to-Many
public function roles()
{
return $this->belongsToMany(Role::class);
}
Consultas avançadas
Filtragem de dados
// Busca simples
User::where('active', true)->get();
// Consultas complexas
User::where('age', '>', 18)
->whereHas('posts', function($query) {
$query->where('published', true);
})
->get();
Agregações
// Contagem
User::count();
// Soma
Order::sum('total');
// Média
Rating::avg('score');
Boas práticas
1. Uso de scopes
public function scopeActive($query)
{
return $query->where('active', true);
}
// Utilização
User::active()->get();
2. Accessors e mutators
// Accessor
public function getFullNameAttribute()
{
return "{$this->first_name} {$this->last_name}";
}
// Mutator
public function setPasswordAttribute($value)
{
$this->attributes['password'] = bcrypt($value);
}
3. Collections
$users = User::all()->filter(function ($user) {
return $user->posts_count > 3;
})->map(function ($user) {
return $user->only(['id', 'name', 'email']);
});
Otimização de desempenho
1. Eager Loading
// Sem Eager Loading (problema N+1)
$books = Book::all();
foreach ($books as $book) {
echo $book->author->name;
}
// Com Eager Loading
$books = Book::with('author')->get();
2. Chunking para grandes volumes de dados
User::chunk(100, function ($users) {
foreach ($users as $user) {
// Processamento em lotes
}
});
Conclusão
O Eloquent ORM é uma ferramenta poderosa que simplifica consideravelmente o gerenciamento de bancos de dados no Laravel. Ao dominar seus recursos, você pode criar aplicações mais performáticas e fáceis de manter.
Recursos complementares
Sobre InSkillCoach
Especialista em treinamento e tecnologias
Coach especializado em tecnologias avançadas e IA, apoiado pela GNeurone Inc.
Certificações:
- AWS Certified Solutions Architect – Professional
- Certificações Google Cloud
- Microsoft Certified: DevOps Engineer Expert
- Certified Kubernetes Administrator (CKA)
- CompTIA Security+
Comentários
Os comentários são alimentados pelo GitHub Discussions
Conecte-se com o GitHub para participar da discussão