laravel 5.6 bulk inserting json data
16,818
Solution 1
This code works for me. It inserted all 40 records with no problems.
$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"],
]);
}
Solution 2
You can use: Eloquent::insert()
Like example below.
$data = array(
array('name'=>'Coder 1', 'rep'=>'4096'),
array('name'=>'Coder 2', 'rep'=>'2048'),
//...
);
Coder::insert($data);
Author by
Naveed Sheriffdeen
Updated on July 07, 2022Comments
-
Naveed Sheriffdeen over 1 year
I am trying to build an API to store and retrieve MCQ exam papers. I am using laravel resource class to send handle Json data. I need to insert 40 records into MySQL database in a single query without using multi dimensional arrays. Is there any method available?
Sample data from front end:
{ "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!" } ]
}`
The front end send 40 such objects i need to bulk insert them into my database. The below code is my controller store function,
` $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); }
What are my choices for bulk inserting the data?
-
Naveed Sheriffdeen over 5 yearsI need to insert 40 records at once this method ill have to write 40 arrays. i am looking for a smaller code
-
Naveed Sheriffdeen over 5 yearsno i need to insert 40 records at once. the data comes as a json object from front end if i am to insert it in your method wouldn't i have to write: `array('name'=> 'coder') 40 times.
-
Afinas EM about 5 yearsWorked for me :)