我正在 Laravel 中制作一个测验应用程序,但我遇到了一些麻烦。
我在数据库中有两个表,问题和答案(问题有标题和图像,答案有答案、正确字段和 question_id),我正在 Laravel 中为它们制作播种机。我想让它这样一个问题只有 3 个答案,只有一个正确,所以我尝试在答案工厂中做这样的事情(这有点乱,因为我正在尝试周围的东西):
$idEncontrado = false;
$questionId = Question::inRandomOrder()->first()->id;
$answers = Answer::where("question_id", $questionId)->get();
while ($idEncontrado == false){
if(count($answers) < 3){
$idEncontrado = true;
}else{
$questionId = Question::inRandomOrder()->first()->id;
$answers = Answer::where("question_id", $questionId)->get();
}
}
return [
'answer' => $this->faker->paragraph("2"),
'correct' => function () use ($questionId, $answers) {
$correcta = false;
if(count($answers) == 0){
$correcta = true;
}
return $correcta;
},
"question_id" => $questionId,
];
在尝试这样做一段时间后,我发现我为答案所做的计数似乎由于某种原因总是返回 0,所以没有按预期工作。我知道如果我真的想我可以手动执行此操作,但现在我花了一点时间尝试解决此问题,我想知道是否有办法做到这一点。谢谢你。