where(function ($q) use ($search) { $q->orWhere('id', 'LIKE', $search) ->orWhere('name', 'LIKE', $search) ->orWhere('numeric_code', 'LIKE', $search) ->orWhere('phonecode', 'LIKE', $search); }); return $query; } public function states() { return $this->hasMany(State::class); } public function nameTranslations() { return $this->hasMany(CountryTranslation::class); } public function getTranslatedNameAttribute() { $languageCode = request()->header('Content-Language') ?? app()->getLocale(); if (empty($languageCode)) { return $this->name; } $language = Language::select(['id', 'code'])->where('code', $languageCode)->first(); if (! $language) { return $this->name; } $nameTranslations = $this->relationLoaded('nameTranslations') ? $this->nameTranslations : $this->nameTranslations()->get(); $translation = $nameTranslations->first(static function ($data) use ($language) { return $data->language_id == $language->id; }); return ! empty($translation?->name) ? $translation->name : $this->name; } // public function translations() // { // return $this->hasMany(CountryTranslation::class); // } public function currency() { return $this->hasOne(Currency::class); } }