【发布时间】:2020-06-01 11:06:56
【问题描述】:
您好,我只想检索学生尚未参加的测验行 当他完成测验时,QuizStudent 表中完成的变量将变为 1
我的人际关系: 测验模式:
public function quizstudents(){
return $this->hasMany('App\Quizstudent');
}
QuizStudent 模式:
public function quiz(){
return $this->belongsTo('App\Quiz','quiz_id');
}
我尝试使用 Query Builder 来实现它正在工作
$idUser = Auth::User()->id;
$quizs= DB::table('quizzes')
->join('quizstudents', 'quizzes.id', '=', 'quizstudents.quizze_id')
->select('quizzes.id')
->where([['quizstudents.student_id','=',$idUser],['quizstudents.done','=','0']])
->distinct()
->get();
但问题是我的视图出现错误
未定义属性:stdClass::$classe
因为在视图中我使用 Eloquent 样式示例:$quiz->answer 并且因为我想使用分页等..
所以我尝试将上面的 QueryBuilder 代码转换为 eloquent 我尝试了这个:
$quizs= Quiz::with('quizstudents')->whereIn('classe_id', $classes)->where([['quizstudents.student_id','=',$idUser],['quizstudents.done','=','0']])->orderBy('created_at','desc')->paginate(10);
但我得到了错误
Column not found: 1054 Unknown column 'quizstudents.student_id' in 'where clause' (SQL: select count(*) as aggregate from `quizzes` where `classe_id` in (1) and (`quizstudents`.`student_id` = 79 and `quizstudents`.`done` = 0))
感谢您的宝贵时间,并提前向您道歉
编辑:底部的两个答案都很棒,他们都在工作 感谢帮助的人,请不要错过要设置的部分 如果它与什么不同,则在关系中增加你的外键 正常的一点解释我创建了模态测验和 使用模态同时迁移和控制器:make Quiz -mc 并没有意识到 quiz 的复数形式是 quizzes 所以当我设置 我认为关于 quizze_id 的外键将是默认值,但是 Laravel 太聪明了,知道默认应该是 quiz_id, 英语的运气会伤害你当心这个并且对不起我的坏事 英文
【问题讨论】:
-
错字?
quiztudents()与quizstudents()? -
我修好了,但还是一无所获