Bad Practice Example
// Controller Code public function index() { $users = User::whereNotNull('activated_at')->select('name', 'email')->get(); } public function show(int $userId) { $user = User::whereNotNull('activated_at')->findOrFail($userId); } public function edit(int $userId) { $user = User::whereNotNull('activated_at')->findOrFail($userId); }
What To Do Instead
// app/Models/User.php: public function scopeActive($query) { return $query->whereNotNull('activated_at'); } // Controller Code: public function index() { $users = User::active()->select('name', 'email')->get(); } public function show(int $userId) { $user = User::active()->findOrFail($userId); } public function edit(int $userId) { $user = User::active()->findOrFail($userId); }
التوضيح
إذا كان لدينا شرط مكرر في أكثر من مكان، فمن الأفضل إستخدام Scope، وذلك لسببين:
عند التعديل عوضا أن نقوم بالتعديل في أكثر من مكان، فقط يجب التعديل في مكان واحد فقط.