Eloquent不会叫表

时间:2018-05-28 06:19:37

标签: php laravel laravel-5 eloquent

我试图按关系名称过滤结果

$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其中questionsquestion_category_id =   question_categoriesidquestion_categoriesid = 1限制1)

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

2 个答案:

答案 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 问题。