1

我正在 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,所以没有按预期工作。我知道如果我真的想我可以手动执行此操作,但现在我花了一点时间尝试解决此问题,我想知道是否有办法做到这一点。谢谢你。

4

0 回答 0