'int', 'marital_status' => 'int', 'province_id' => 'int', 'city_id' => 'int', 'status' => 'int' ]; protected $hidden = [ 'password' ]; protected $fillable = [ 'first_name', 'last_name', 'national_code', 'gender', 'marital_status', 'spouse_name', 'mobile', 'email', 'profile_image', 'username', 'password', 'province_id', 'city_id', 'status' ]; #[Scope] protected function applySearch(Builder $query): void { $request = request(); if ($request->filled('keyword')) { $keyword = $request->input('keyword'); $query->whereAny([ 'first_name', 'last_name', 'mobile', 'username', ], '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 city() { return $this->belongsTo(City::class); } public function province() { return $this->belongsTo(Province::class); } public function comments() { return $this->hasMany(Comment::class); } public function favorites() { return $this->hasMany(Favorite::class); } public function reservations() { return $this->hasMany(Reservation::class); } }