Laravel本地范围急切负载

时间:2018-05-31 11:29:46

标签: php laravel-5 eager-loading

假设我在DB中有三个表(和三个模型)。

  1. 目的地(id,title,region_id)
  2. 地区(id,title)
  3. 翻译(id,region_id; nullable,destination_id; nullable,translated_value)
  4. 然后我定义了这些关系和范围:

    1. 目标

          view.getInstructions().setText("Scores: ");
      
    2. 区域

      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');}
      
    3. 然后我在两者上获取目的地和急切的翻译。

      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');}
      

      问题: 当渴望加载时,Region会从目标转换,但如果我加载它,通常一切都很好。

      我直接在数据库中运行查询并按原样执行,这意味着急切加载并未正确连接关系。

      渔获物在哪里?

0 个答案:

没有答案