laravel在belongsToMany关系中添加条件

时间:2016-03-26 08:43:05

标签: php laravel laravel-5

在索引控制器中,我不需要任何条件,因此数据可以非常清晰地检索所有关系模型。

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

这会返回问题列表,其中包含user coursessubject等所有相关数据 但是在课程控制器中,当尝试使用相同的方法检索数据并为课程slug添加条件时,则返回错误。

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

这里缺少什么,请帮助。

1 个答案:

答案 0 :(得分:2)

如果你想获得多个关系,你需要传递数组,比如

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