我试图按关系名称过滤结果
$questions = Question::whereHas('category', function ($q) use ($coh) {
$q->where('id', $coh->id);
})->get();
我得到以下错误:
SQLSTATE [42S22]:找不到列:1054未知列 'where子句'中的'questions.question_category_id'(SQL:select * from
question_categories
其中questions
。question_category_id
=question_categories
。id
和question_categories
。id
= 1限制1)
阅读错误很明显,为什么它不起作用,是因为雄辩还是我没有调用问题表,不应该自动调用它,因为我正在调查问题:: ??
答案 0 :(得分:1)
转到问题模型以及类别()
中的以下行class Question extends Model{
public function category(){
return $this->hasMany('App\Category', 'category_id');
}
}
然后尝试点击查询
$questions = Question::whereHas('category', function ($q) use ($coh) {
$q->where('id', $coh->id);
})->get();
答案 1 :(得分:0)
如果我理解正确,关系应该是问题属于类别和类别有多个问题。
因此,为了过滤,您可以采用不同的方式,具体取决于您的表的属性。 如果你想用问题来做,因为你有category_id作为Foreing Key你可以这样做( 假设你的foreing key字段名为='question_category_id' ):
$questions = Question::("question_category_id", "=", $coh);
正如有人提到的那样,您也可以使用类别模型来访问该类别的所有归属问题,因为您应该在类别模型中定义每个类别 hasMany 问题。