إستخدام Scopes بدلا عن أعادة كتابة الشروط أكثر من مرة.

إستخدام Scopes بدلا عن أعادة كتابة الشروط أكثر من مرة.

2024-05-06 وقت القراءه : 1 دقائق

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، وذلك لسببين:

  • جعل الكود أقصر.
  • حعل الكود أسهل للتعديل.

عند التعديل عوضا أن نقوم بالتعديل في أكثر من مكان، فقط يجب التعديل في مكان واحد فقط.

للمزيد عن Query Scopes من خلال هذا المقال.

إضافة تعليق
Loading...