Laravel локальная сфера при активной нагрузке - PullRequest
0 голосов
/ 31 мая 2018

Допустим, у меня есть три таблицы в БД (и три модели).

  1. Пункт назначения (идентификатор, заголовок, region_id)
  2. Регион (идентификатор, заголовок)
  3. Переводы (идентификатор, region_id; nullable, destination_id; nullable, translation_value)

Тогда у меня определены следующие отношения и области действия:

  1. Направление

    public function getRegion(){
        return $this->belongsTo('App\Models\Region', 'region_id')->translate();}
    
    public function scopeTranslate($query){
        return $query->join('translations', function($join){
        $join->on('destinations.id', '=', 'translations.destination_id')
           ->where('language_code', app()->getLocale());
    })->select('destinations.*', 'translations.value as translated_title');}
    
  2. Регион

    public function scopeTranslate($query){
        return $query->join('lm_translations', function($join){
        $join->on('regions.id', '=', 'lm_translations.region_id')
            ->where('language_code', app()->getLocale());
    })->select('regions.*', 'lm_translations.value as translated_title');}
    

Затем я получаю места назначения и загружаю переводы на обоих.

 $destinations = Destination::whereHas('getRegion')
     ->with('getRegion')->translate()->get();

Проблема: Регион получает перевод от места назначения при активной загрузке, но еслиЯ загружаю его, как обычно, все в порядке.

Я выполнял запросы непосредственно в БД, и они выполняются, как и должно быть, это означает, что нетерпеливая загрузка неправильно соединяет отношения.

Где подвох?

...