Laravel - 将 ID [] 的模型 [App\QuestionOption] 错误编码为 JSON:检测到递归

Nom*_*Ali 1 php laravel

我正在尝试将数据保存到 QuestionOption 表中并面临检测到的递归问题。我一直在到处搜索,但可以找到这个问题的任何答案。以下是我试图将数据保存到数据库的地方。

$question = new Question();
    $question->type = $request->type;
    $question->optional = $request->optional;
    $question->question = $request->question;
    $question->status = $request->status;
    $question->save();     ////// WORKS PERFECTLY TILL THIS LINE
    if ($request->type == 'choice') {
        foreach ($request->options as $key => $option) {
            $option = new QuestionOption();  ////////HERE I AM FACING THAT ERROR
            $option->question_id = $question->id;
            $option->option = $option;
            $option->status = 'active';
            $option->save();
        }
    }
Run Code Online (Sandbox Code Playgroud)

以下是我用于 QuestionOption 的模型,我找不到任何问题。

class QuestionOption extends Model
{

    protected $dates = [
        'created_at',
        'updated_at',
    ];

   protected $fillable = [
        'question_id',
        'option',
        'status',
        'created_at',
        'updated_at',
   ];
}
Run Code Online (Sandbox Code Playgroud)

请指导我完成这个。谢谢!

zah*_*mon 5

这是你的一个愚蠢的错误。您正在$option为 foreach 循环使用变量并作为QuestionOption类的实例。当您分配时出现错误$option->option = $option;,因为$option现在是QuestionOption类的实例而不是 foreach 循环中的变量。更改变量名。就像在 foreach 循环中一样

foreach ($request->options as $key => $value) {
    $option = new QuestionOption();
    $option->question_id = $question->id;
    $option->option = $value;
    $option->status = 'active';
    $option->save();
}
Run Code Online (Sandbox Code Playgroud)