Php 雄辩者不叫桌子

Php 雄辩者不叫桌子,php,laravel,laravel-5,eloquent,Php,Laravel,Laravel 5,Eloquent,我正在尝试按关系的名称筛选结果 $questions = Question::whereHas('category', function ($q) use ($coh) { $q->where('id', $coh->id); })->get(); 我得到了以下错误: SQLSTATE[42S22]:未找到列:1054未知列 “where子句”SQL:select*from中的“questions.question\u category\u id” 问题\类别,其中有问

我正在尝试按关系的名称筛选结果

$questions = Question::whereHas('category', function ($q) use ($coh) {
   $q->where('id', $coh->id);
})->get();
我得到了以下错误:

SQLSTATE[42S22]:未找到列:1054未知列 “where子句”SQL:select*from中的“questions.question\u category\u id” 问题\类别,其中有问题。问题\类别\ id= 问题\u categories.id和问题\u categories.id=1限制1


阅读错误很明显,为什么它不起作用,是因为eloquent或我没有调用问题表,它不应该自动调用它,因为我正在提出问题:??

如果我理解正确,关系应该是一个问题属于一个类别,而一个类别有许多问题

因此,为了进行筛选,可以根据表的属性以不同的方式进行筛选。 如果您想对问题执行此操作,因为您将category\u id作为Foreing键,您可以执行类似的操作,假设Foreing键字段的名称为='question\u category\u id':

正如有人提到的,您也可以使用类别模型访问属于该类别的所有问题,因为您应该在类别模型中定义每个类别都有许多问题。

只需转到您的问题模型和类别中的下一行即可

然后尝试点击查询

$questions = Question::whereHas('category', function ($q) use ($coh) {
    $q->where('id', $coh->id);
})->get();

向您展示问题模型和类别模型,最好您可以包含表的迁移。如果我理解您的代码,您希望将所有问题都包含在特定的类别中。那么做$category->问题不是更好吗?
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();