0%
Maîtriser Eloquent ORM : Le Guide Complet

Maîtriser Eloquent ORM : Le Guide Complet

Guide complet pour maîtriser Eloquent ORM, l'outil de gestion de base de données de Laravel

I

InSkillCoach

· min

Maîtriser Eloquent ORM : Le Guide Complet

Eloquent ORM est l’un des composants les plus puissants de Laravel. Il simplifie considérablement l’interaction avec la base de données en permettant de manipuler les données comme des objets PHP.

Les bases d’Eloquent

Création d’un modèle

php artisan make:model User -m

Structure d’un modèle de base

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    protected $fillable = ['name', 'email', 'password'];
    protected $hidden = ['password'];
}

Relations avec 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);
}

Requêtes avancées

Filtrage des données

// Recherche simple
User::where('active', true)->get();

// Requêtes complexes
User::where('age', '>', 18)
    ->whereHas('posts', function($query) {
        $query->where('published', true);
    })
    ->get();

Agrégations

// Comptage
User::count();

// Somme
Order::sum('total');

// Moyenne
Rating::avg('score');

Bonnes pratiques

1. Utilisation des scopes

public function scopeActive($query)
{
    return $query->where('active', true);
}

// Utilisation
User::active()->get();

2. Accesseurs et mutateurs

// Accesseur
public function getFullNameAttribute()
{
    return "{$this->first_name} {$this->last_name}";
}

// Mutateur
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']);
});

Optimisation des performances

1. Eager Loading

// Sans Eager Loading (N+1 problème)
$books = Book::all();
foreach ($books as $book) {
    echo $book->author->name;
}

// Avec Eager Loading
$books = Book::with('author')->get();

2. Chunking pour les grandes données

User::chunk(100, function ($users) {
    foreach ($users as $user) {
        // Traitement par lots
    }
});

Conclusion

Eloquent ORM est un outil puissant qui simplifie considérablement la gestion des bases de données dans Laravel. En maîtrisant ses fonctionnalités, vous pouvez créer des applications plus performantes et maintenables.

Ressources complémentaires

InSkillCoach

À propos de InSkillCoach

Expert en formation et technologies

Coach spécialisé dans les technologies avancées et l'IA, porté par GNeurone Inc.

Certifications:

  • AWS Certified Solutions Architect – Professional
  • Certifications Google Cloud
  • Microsoft Certified: DevOps Engineer Expert
  • Certified Kubernetes Administrator (CKA)
  • CompTIA Security+
2.0k
225

Commentaires

Les commentaires sont alimentés par GitHub Discussions

Connectez-vous avec GitHub pour participer à la discussion

Lien copié !