微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – laravel 5.6批量插入json数据

我正在尝试构建一个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 举报,一经查实,本站将立刻删除。

相关推荐