Des nouvelles ont été ajoutées en tête de listes.
Remontez pour les voir.
Inscription à la newsletter
Modèle de référentiel dans Laravel : nettoyez votre code en désordre
DEV -
28/12
Le problème Avez-vous déjà vu des contrôleurs comme celui-ci ? classe publique OrderController étend Controller { ...
Le problème Avez-vous déjà vu des contrôleurs comme celui-ci ?
public class OrderController extends Controller { public function show($id) { $order = Order::with(['customer', 'items.product']) ->where('id', $id) ->first(); return réponse()->json($ordre); } public function getUserOrders($userId) { // Même requête dupliquée ! 😱 $orders = Order::with(['customer', 'items.product']) ->where('customer_id', $userId) ->get(); return réponse()->json($commandes); } }
Entrer en mode plein écran Quitter le mode plein écran
Problèmes :
🔴 Requêtes dupliquées partout 🔴 Contrôleurs étroitement couplés à Eloquent 🔴 Impossible de tester sans base de données 🔴 Logique métier mélangée à l'accès aux données
La solution : modèle de référentiel
Étape 1 : Créer une interface
interface OrderRepositoryInterface { public function find(int $id): ?Order; fonction publique findWithRelations(int $id): ?Order; fonction publique findByCustomer(int $customerId) : Collection ; }
Entrer en mode plein écran Quitter le mode plein écran
Étape 2 : implémenter le référentiel
la classe OrderRepository implémente OrderRepositoryInterface { protected $model; public function __construct(Commande $model) { $this->model = $model; } public function findWithRelations(int $id): ?Order { return $this->model ->with(['customer', 'items.product']) ->find($id); } public function findByCustomer(int $cu... [Courte citation de 8% de l'article original]
Loading...
🍪
Le modèle économique de notre site repose sur l'affichage de publicités personnalisées basées sur l'utilisation de cookies publicitaires. En continuant votre visite sur notre site, vous consentez à l'utilisation de ces cookies.
Politique de confidentialité