2017-04-13 36 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(
      'slug', 
      'title', 
      'season' 
    ); 

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

しかし、あなたは簡単な構文を使用することができます(このようなコントローラでモデルを注入しないでください)注意してください:

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

もその場合にルートモデルのバインドを使用する理由がわかりません

+0

私はできる限り私はあなたにキスをします。私は安心しています。 XD – Mdalz

+0

また、これは私の質問に答えます。 – Mdalz

関連する問題