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
InSkillCoach
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
À 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+
Commentaires
Les commentaires sont alimentés par GitHub Discussions
Connectez-vous avec GitHub pour participer à la discussion