*/ class UserRepository extends BaseRepository implements UserRepositoryInterface { public function __construct(User $model) { parent::__construct($model); } /** * @param array $filters * @return LengthAwarePaginator */ public function paginate(array $filters = [], int $perPage = 15): LengthAwarePaginator { $query = $this->model->newQuery()->with('roles'); if (! empty($filters['search'])) { $search = $filters['search']; $query->where(function ($q) use ($search) { $q->where('name', 'like', "%{$search}%") ->orWhere('email', 'like', "%{$search}%"); }); } if (! empty($filters['role'])) { $query->role($filters['role']); } return $query->latest()->paginate($perPage); } public function findByEmail(string $email): ?User { return $this->model->newQuery()->where('email', $email)->first(); } }