0%
Dominando o Eloquent ORM: O Guia Completo

Dominando o Eloquent ORM: O Guia Completo

Guia completo para dominar o Eloquent ORM, a ferramenta de gerenciamento de banco de dados do Laravel

I

InSkillCoach

· min

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

InSkillCoach

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+
1.8k
142

Comentários

Os comentários são alimentados pelo GitHub Discussions

Conecte-se com o GitHub para participar da discussão

Link copiado!