2017-04-13 54 views
0

我有一个懒惰加载belongsToMany关系的现有模型就好了。Laravel 5.4现在正在加载belongsToMany Relationship null绑定

我的问题是,当我尝试加载关系时,我得到一个空的结果

当我检查查询时,它显示关系查询的绑定为null。

这是我(简化)代码:

// Controller 
public function filter(Request $request, App\Programs $program) 
{ 
    $program = $program->newQuery(); 

    $program->select(
      'slug', 
      'title', 
      'season' 
    ); 

    $program->with([ 
     'sports' 
    ]); 
    return $program->get(); 
} 

// Model 
class Programs extends Model 
{ 
    public function sports(){ 
     return $this->belongsToMany('App\Sport', 'program_sport', 'program_id', 'sport_id'); 
    } 

} 

回答

1

的问题是,你不拿id从数据库,以便雄辩无法获得相关的模型。相反的:

$program->select(
      'slug', 
      'title', 
      'season' 
    ); 

你应该使用:

$program->select(
      'id', 
      'slug', 
      'title', 
      'season' 
    ); 

要知道但是你可以用更简单的语法(并在控制器这样不注射模型):

return Program::select('id','slug', 'title', 'season')->with('sports')->get(); 

而且我不知道你为什么在这种情况下使用路线模型绑定

+0

不是很奇怪,但我会吻你,如果我可以。我很放心。 XD – Mdalz

+0

此外,这回答我的问题。 – Mdalz