2017-04-13 3 views
0

belongsToMany 관계를 게으른로드하는 기존 모델이 있습니다.Laravel 5.4 Eager loading belongsToMany 관계 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(
      'id', 
      'slug', 
      'title', 
      'season' 
    ); 

것은 그러나 당신이 간단한 구문을 사용할 수 있습니다주의 (와 같은 컨트롤러 모델을 주입하지 않음) :

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

당신은 사용해야합니다 또한

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

왜 그런 경우에 루트 모델 바인딩을 사용하는지 잘 모르겠다.

+0

나는 별 수 없다.하지만 내가 할 수 있으면 키스하겠다. 나는 안도했다. XD – Mdalz

+0

또한이 질문에 대한 답변입니다. – Mdalz