Scope là gì?
Scope là một method giúp chúng ta thêm 1 điều kiện nào đó để quá trình query diễn ra gọn gàng nhanh chóng hơn.
Để hiểu rõ hơn chúng ta xét đến ví dụ bên dưới nhé:
public static function getAdministrators()
{
return User::where('role', 1)->where('is_active', 1)->get();
}
Code language: PHP (php)
Method where được gọi rất nhiều lần, lặp code và nhìn rất rối. Chính vì thế Laravel hỗ trợ Scope để tối ưu việc này.
Cách khởi tạo Scope
Function scope bắt buộc phải đặt tên với format như sau: scope{Name}
và {Name}
phải viết in hoa chữ đầu.
public function scopeAdmin($query)
{
return $query->where('role', 1);
}
public function scopeActive($query)
{
return $query->where('is_active', 1);
}
Code language: PHP (php)
Cách sử dụng Scope
Chúng ta có thể gọi scope như sau:
public static function getAdministrators()
{
return User::admin()->active()->get();
}
Code language: PHP (php)
Vậy là chúng ta đã có scope cơ bản để tái sử dụng nhiều lần 😀