我正在尝试构建一个API来存储和检索MCQ试卷。我正在使用laravel资源类来发送句柄Json数据。我需要在不使用多维数组的情况下,在一个查询中插入40条记录到MySQL数据库中。有没有可用的方法?
来自前端的示例数据:
{
"data":[
{
"paper_id":"5",
"question_no":"2",
"question":"test insert code",
"answer1":"answer1",
"answer2":"answer2 ",
"answer3":"answer3 ",
"answer4":"Answer4 ",
"answerC":"Correct Answer",
"knowarea":"who knows!"
},
{
"paper_id":"5",
"question_no":"3",
"question":"test insert code",
"answer1":"answer1",
"answer2":"answer2 ",
"answer3":"answer3 ",
"answer4":"Answer4 ",
"answerC":"Correct Answer",
"knowarea":"who knows!"
},
{
"paper_id":"5",
"question_no":"4",
"question":"test insert code",
"answer1":"answer1",
"answer2":"answer2 ",
"answer3":"answer3 ",
"answer4":"Answer4 ",
"answerC":"Correct Answer",
"knowarea":"who knows!"
},
{
"paper_id":"5",
"question_no":"5",
"question":"test insert code",
"aanswer1":"answer1",
"answer2":"answer2 ",
"answer3":"answer3 ",
"answer4":"Answer4 ",
"answerC":"Correct Answer",
"knowarea":"who knows!"
}
]}`
前端发送了40个这样的对象,我需要将它们批量插入到我的数据库中。下面的代码是我的控制器存储函数,
` $paper->paper_id = $request->input('paper_id');
$paper->question_no = $request->input('question_no');
$paper->question = $request->input('question');
$paper->answer1 = $request->input('answer1');
$paper->answer2 = $request->input('answer2');
$paper->answer3 = $request->input('answer3');
$paper->answer4 = $request->input('answer4');
$paper->answerC = $request->input('answerC');
$paper->knowarea = $request->input('knowarea');
if($paper->save())
{
return new ExamPaperResource($paper);
}批量插入数据的选择是什么?
发布于 2018-02-19 18:53:20
这段代码适用于我。它插入了全部40条记录,没有任何问题。
$array = $request->all();
foreach($array["data"] as $row)
{
Exam_Paper::create(['paper_id' => $row["paper_id"],
'question_no' => $row["question_no"],
'question' => $row["question"],
'answer1' => $row["answer1"],
'answer2' => $row["answer2"],
'answer3' => $row["answer3"],
'answer4' => $row["answer4"],
'answerC' => $row["answerC"],
'knowarea' => $row["knowarea"],
]);
}发布于 2018-02-19 17:04:12
根据示例数据,您可以对数据执行json_decode操作,然后使用单个Model::insert()
{
"data":[
{
"paper_id":"5",
"question_no":"2",
"question":"test insert code",
"answer1":"answer1",
"answer2":"answer2 ",
"answer3":"answer3 ",
"answer4":"Answer4 ",
"answerC":"Correct Answer",
"knowarea":"who knows!"
},
...
]
}
// Controller.php
public function store($json)
{
$data = json_decode($json, true);
Paper::insert($data);
}这将从您的json创建数组,然后一次插入所有记录。
发布于 2018-02-19 16:04:44
您可以使用: Eloquent::insert()
就像下面的例子。
$data = array(
array('name'=>'Coder 1', 'rep'=>'4096'),
array('name'=>'Coder 2', 'rep'=>'2048'),
//...
);
Coder::insert($data);https://stackoverflow.com/questions/48861486
复制相似问题