2016-03-26 15 views
0

インデックスコントローラでは、すべてのリレーショナルモデルでデータが非常にはっきりと取得されるため、条件は必要ありません。laravel belongsToManyの条件を追加relationhaip

$questions = Question::with('user','courses','subjects')->take(10)->orderBy("id","DESC")->get(); 

そのリターンエラー同じでデータを取得しようとコースのスラグのための条件を追加するとき、これはusercoursessubject のようなしかし、コースのコントローラ内のすべての関連データとの質問リストを返します。

$questions = Question::with('user','courses','subjects')->where("slug",$course)->take(10)->orderBy("id","DESC")->get(); 

slug coloumnがないので、その質問はテーブルクエリでこの条件を追加しますので。私は、すべての関連データを取得する方法 と私はcourseクラスを使用して取得する場合、それは正しい結果を返しますが、subjectsusersはその後

$questions = Course::with("question")->where("nick_name",$course)->orWhere("slug",$course)->orderBy("id","DESC")->take(10)->get(); 

が欠落しています。 そしてもちろん、モデルは

public function question(){ 
    return $this->belongsToMany('App\Models\Question','university_questions')->take(10); 
} 

と質問モデルが助けてください、ここで欠けている何

public function courses(){ 
    return $this->belongsToMany('App\Models\Course','course_questions'); 
} 
public function subjects(){ 
    return $this->belongsToMany('App\Models\Subject','subject_questions'); 
} 
public function years(){ 
    return $this->hasMany('App\Models\QuestionYear'); 
} 

を持っていました。あなたが複数の関係を取得したい場合

答えて

2

あなたはこの

$questions = Course::with([ 
       'questions.user', 
       'questions.courses', 
       'questions.subjects' 
       ]) 
       ->take(10) 
       ->where("slug",$slug) 
       ->orderBy("id","DESC") 
       ->get(); 
+0

のように、配列を渡す必要があるしかし、スラグは、それはもちろんテーブルでの質問表ではありません。 – Jitendra

+0

ああ、申し訳ありませんが、あなたがコールバック関数を使用する必要がある関連モデルに条件を追加する場合は、私は今答えを編集します – Hrach

+0

ありがとう、しかし、私もこれを試して、それはすべての質問を返し、どこに条件が追加されますか?私はすべての質問を受け取り、この条件はコースでのみ適用されることを意味します。 – Jitendra

関連する問題