Mysql
 sql >> Base de données >  >> RDS >> Mysql

Laravel Eloquent vs query builder - Pourquoi utiliser eloquent pour diminuer les performances

Eloquent est l'implémentation par Laravel du modèle Active Record et il est livré avec toutes ses forces et ses faiblesses.

Active Record est une bonne solution pour traiter une seule entité de manière CRUD - c'est-à-dire créer une nouvelle entité avec des propriétés remplies, puis l'enregistrer dans une base de données, charger un enregistrement à partir d'une base de données ou le supprimer.

Vous bénéficierez beaucoup des fonctionnalités d'Eloquent telles que la vérification sale (pour envoyer SQL UPDATE uniquement pour les champs qui ont été modifiés), les événements de modèle (par exemple pour envoyer des alertes administratives ou mettre à jour les compteurs de statistiques lorsque quelqu'un a créé un nouveau compte), traits ( horodatages, suppressions logicielles, vos traits personnalisés) chargement impatient/paresseux, etc. Vous pouvez également appliquer un modèle basé sur le domaine et implémenter certains éléments de logique métier dans vos entités Active Record, par exemple, la validation, la gestion des relations, les calculs, etc.

Mais, comme vous le savez déjà, Active Record est livré avec un prix de performance.

Lorsque vous traitez un seul enregistrement ou quelques enregistrements, vous n'avez rien à craindre. Mais pour les cas où vous lisez beaucoup d'enregistrements (par exemple pour les grilles de données, pour les rapports, pour le traitement par lots, etc.), le simple Laravel DB méthodes est une meilleure approche.

Pour nos applications basées sur Laravel, nous utilisons les deux approches comme nous le jugeons approprié. Nous utilisons les formulaires Eloquent for UI de Laravel pour traiter un seul enregistrement et utiliser DB méthodes (soutenues par des vues SQL avec des ajustements de performances supplémentaires spécifiques au moteur de base de données) pour récupérer des données pour les tables d'interface utilisateur, les tâches d'exportation, etc. Cela fonctionne également bien avec les API RESTful - Eloquent pour GET, PUT, POST, DELETE avec une clé et DB pour GET sans clé mais avec filtres et tri et pagination.