Laravel - 使用数据透视表数据插入多行

时间:2017-01-04 16:01:20

标签: laravel eloquent

我有3张桌子:

  1. 问题
  2. 答案
  3. question_answers
  4. 问题模型:

    public function answer()
        {
            return $this->belongsToMany(Answer::class);
        }
    

    我创建了一个页面,我输入了一个问题和4个答案,然后将它们插入到我的数据库中。

            $question = new Question;
            $question->title = $request->question_title;
            $question->save();
    
            $answers = $request->answers;
            $answer = Answer::insert($answers);
    

    我如何为每个问题插入question_answers

    question_answers看起来像这样:

    enter image description here

    我无法找到如何使用insert方法

    进行操作的线索

1 个答案:

答案 0 :(得分:2)

由于您使用的是多对多关系,因此应使用attach()方法。例如:

$question = Question::create($request->question); // Save question.

$answersIds = [];
foreach ($request->answers as $answer) {
    $answersIds [] = Answer::create($answer)->id; // Save each answer.
}

$question->answers()->attach($answersIds); // Attach answers to the question.

此外,您无法使用insert()批量插入答案,因为您需要获取答案ID以附上问题的答案。