Вопрос:

laravel получает всю запись и добавляет к ней подходящий объект перевода

laravel laravel-5 eloquent

17 просмотра

1 ответ

387 Репутация автора

в моем приложении пользователь может выбрать несколько языков ... на моей домашней странице я хочу показать все отели + требуемый язык.

в моей домашней странице контроллера я пишу это:

он возвращает только одну запись отеля для запрошенного ключа локали ... я хочу показать весь отель и добавить соответствующий перевод к нему, если будет готов. любая идея?

   $lang = app()->getLocale();
        $hotels = Hotel::whereHas('HotelTranslates.language', function ($q) use ($lang) {
            $q->where('name', $lang);
        })->get();

СТРУКТУРА БД:

таблица отелей :

  id(int)
  user(int)
  name
  manager
  ...

hotels_translates table :

   id (int)
   language_id(int)
   hotel_id (int)
   title
   meta
   keywords
   ...

Таблица языков:

  id(int)
  name
  slug

в модели отеля:

 public function HotelTranslates()
    {
        return $this->hasMany(HotelTranslate::class);
    }

HotelTranslate модель:

  public function hotel()
    {
        return $this->belongsTo(Hotel::class);
    }



      public function language(){
            return $this->belongsTo(Language::class);
        }

языковая модель:

public function translates(){
        return $this->hasMany(HotelTranslate::class);
    }
Автор: devmrh Источник Размещён: 11.08.2019 04:32

Ответы (1)


0 плюса

455 Репутация автора

Laravel имеет встроенный способ локализации текста. Это должна быть лучшая альтернатива, чем то, что вы делаете со схемой базы данных.

https://laravel.com/docs/5.8/localization#defining-translation-strings

Автор: IGP Размещён: 11.08.2019 08:28
Вопросы из категории :
32x32