'int' ]; protected $hidden = [ 'password' ]; protected $fillable = [ 'first_name', 'last_name', 'username', 'email', 'mobile', 'password', 'image', 'status' ]; #[Scope] protected function applySearch(Builder $query): void { $request = request(); if ($request->filled('keyword')) { $keyword = $request->input('keyword'); $query->whereAny([ 'first_name', 'last_name', ], 'LIKE', "%$keyword%"); } } #[Scope] protected function applySort(Builder $query): void { $sort = request('sort'); match ($sort) { 'first_name_asc' => $query->orderBy('first_name', 'asc'), 'first_name_desc' => $query->orderBy('first_name', 'desc'), 'newest' => $query->orderBy('created_at', 'desc'), default => $query->orderBy('created_at', 'desc'), }; } public function roles() { return $this->belongsToMany(Role::class, 'admin_roles'); } public function hasPermission($permission) { return $this->roles() ->whereHas('permissions', function ($query) use ($permission) { $query->where('slug', $permission); }) ->exists(); } public function activityLogs() { return $this->hasMany(ActivityLog::class); } }