我正在尝试构建一个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);
}
批量插入数据有哪些选择?
解决方法:
根据您的示例数据,您可以对数据进行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创建数组,然后一次插入所有记录.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。