【问题标题】:Can't save quiz answers无法保存测验答案
【发布时间】:2021-11-02 19:45:21
【问题描述】:

我正在尝试构建测验系统,但我被困在这个问题上。

  public function store(Quizze $quizzes)
    {
        $data = request()->validate([
            'title.title' => 'required',
            'questions.*.question' => 'required',
            'answers.*.answer' => 'required',
        ], [
            'title.title.required' => 'გთხოვთ, შეიყვანოთ ქვიზის სახელი.',
            'questions.*.question.required' => 'გთხოვთ, შეიყვანოთ შეკითხვა.',
            'answers.*.answer.required' => 'გთხოვთ, შეიყვანოთ პასუხი.'
        ]);
        $storeQuiz = $quizzes->create($data['title']);
        $storeQuiz->questions()->createMany($data['questions']);
        $storeQuiz->questions()->answers()->createMany($data['answers']);
        return redirect('admin/quizzes');
    }

它正在保存测验标题和测验问题,但它不喜欢问题的错误

 $storeQuiz->questions()->answers()->createMany($data['answers']);

这是错误调用未定义的方法Illuminate\Database\Eloquent\Relations\HasMany::answers()

测验模型关系:

public function questions() { 
    return $this->hasMany(QuizQuestion::class, 'quizze_id', 'id'); 
} 

问题模型关系:

public function answers() { 
    return $this->hasMany(QuizAnswer::class, 'question_id', 'id'); 
}

【问题讨论】:

  • 发布您的模型
  • quiz: public function questions() { return $this->hasMany(QuizQuestion::class, 'quizze_id', 'id'); } 问题:公共函数 answers() { return $this->hasMany(QuizAnswer::class, 'question_id', 'id'); }

标签: php laravel


【解决方案1】:
$storeQuiz->questions()->answers()->createMany($data['answers']);

answers() 无法识别question。你可以试试这个:

$storeQuiz = $quizzes->create($data['title']);

foreach($data['questions'] as $q){
    $question = $storeQuiz->questions()->create($q);
    $question->answers()->createMany($data['answers']);
}

【讨论】:

  • 非常感谢你
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-02
  • 2020-04-06
  • 1970-01-01
  • 2018-11-03
  • 1970-01-01
相关资源
最近更新 更多