1

我有一个ModuleQuestionCategory模型。

Module hasMany Questions. (1 to Many)
Question belongsToMany Categories. (Many to Many)

对于给定的Module,我只想访问category_id = X的问题

我不确定最有效的方法是什么。我可以通过 Module 和 Category 之间的 HasManyThrough 关系来做到这一点吗?还是我必须创建一个循环?还是通过原始 SQL 查询来完成?

更新

此 SQL 查询似乎有效。但是,我敢肯定必须有一个更优雅的解决方案?

SELECT id
FROM questions
INNER JOIN category_question ON questions.id = category_question.question_id 
WHERE category_question.category_id = X and module_id = Y;
4

2 回答 2

0
Question::with(['model','categories'=>function($query){
    return $query->where('category_question.category_id',$category_id);
}])->get();

希望这有效。

于 2018-09-07T10:57:01.043 回答
0

你可以用这个来实现

 Question::with(['module','categories'])
   ->join('category_question','category_question.question_id','=','question.id')
   ->where('category_question.category_id','=','X')
   ->where('questions.module_id','=','module_id')->get();
于 2018-09-07T09:34:19.187 回答