【问题标题】:laravel add conditions in belongsToMany relationshaiplaravel 在 belongsToMany 关系中添加条件
【发布时间】:2016-07-13 23:58:55
【问题描述】:

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

 $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 列。 当我使用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');
}

这里缺少什么请帮忙。

【问题讨论】:

    标签: php laravel laravel-5


    【解决方案1】:

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

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

    【讨论】:

    • 但是蛞蝓不在问题表中,它在课程表中。
    • 哦,对不起,如果你想给相关模型添加条件,你需要使用回调函数,我现在编辑答案
    • 谢谢,但我也试过了,它会返回所有问题,如果问题有问题,那么这个 where 条件会添加到那里。意味着我会得到所有问题,并且此条件仅适用于如果 slug 发现它返回 course 否则为 null 的课程。
    • 那么我建议使用反向选项,例如 $course = Course::with(['questions.users,'questions.subjects'])->whereSlug($slug).. ......
    • 我也在考虑这个问题,但这意味着我还与课程模型和主题中的所有表格创建了关系?
    猜你喜欢
    • 2019-07-08
    • 2020-02-28
    • 2018-05-19
    • 2015-11-25
    • 2015-02-22
    • 2021-10-07
    • 1970-01-01
    • 2018-03-08
    • 2021-03-22
    相关资源
    最近更新 更多