說明
總所周知laravel 批量更新復雜的數據就需要通過json傳遞數據
<?php
try {
$str = '[{"pageid":"270"},{"que":[{"title":"sad","type":"1",
"option_a":"sad","option_b":"sad","option_c":"dad","option_d":"ad",
"option_e":"d","option_f":"da","option_g":"sda","option_h":"d",
"answer":"sdad"},{"title":"sdaf","type":"1","option_a":"sfa",
"option_b":"fa","option_c":"da","option_d":"d","option_e":"d",
"option_f":"dd","option_g":"ad","option_h":"add","answer":"ad"},
{"title":"wedwq","type":"1","option_a":"ea","option_b":"aaas","option_c"
:"ssssdas","option_d":"ad","option_e":"ad","option_f":"adad",
"option_g":"wdqd","option_h":"ws","answer":"ada"},
{"title":"dwq","type":"1","option_a":"ad","option_b":"ad",
"option_c":"dad","option_d":"dad","option_e":"ad",
"option_f":"dw","option_g":"ad","option_h":"sad","answer":"d"},
{"title":"af","type":"1","option_a":"sad","option_b":"a","option_c":"af",
"option_d":"saf","option_e":"asfdf","option_f":"da",
"option_g":"fs","option_h":"dasf","answer":"afa"}]}]';
$info = json_decode($str);
$arr = $info[1];
$value = '';
foreach ($arr as $k => $value) {
$value = $value;
}
$pageid = $info[0]->pageid;
foreach ($value as $info) {
$arr1 = [
'title' => $info->title,//題目
'type' => $info->type,//題目類型
'option_a' => $info->option_a,//A
'option_b' => $info->option_b,//B
'option_c' => $info->option_c,//C
'option_d' => $info->option_d,//D
'option_e' => $info->option_e,//E
'option_f' => $info->option_f,//F
'option_g' => $info->option_g,//G
'option_h' => $info->option_h,//H
'answer' => $info->answer,//正確答案
'pageid' => $pageid,
];
\DB::table('v')->insert($arr1);
}
} catch (\Exception $exception) {
$exception->getMessage();
}
- 對應數據庫結構
CREATE TABLE `v` (
`id` int(4) NOT NULL AUTO_INCREMENT,
`title` varchar(200) NOT NULL,
`type` int(1) DEFAULT NULL,
`option_a` varchar(100) DEFAULT NULL,
`option_b` varchar(100) DEFAULT NULL,
`option_c` varchar(100) DEFAULT NULL,
`option_d` varchar(100) DEFAULT NULL,
`option_e` varchar(100) DEFAULT NULL,
`option_f` varchar(100) DEFAULT NULL,
`option_g` varchar(100) DEFAULT NULL,
`option_h` varchar(100) DEFAULT NULL,
`answer` varchar(100) DEFAULT NULL,
`score` int(11) DEFAULT NULL,
`pageid` int(11) DEFAULT NULL,
`token` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `token` (`token`) USING BTREE
) ENGINE=MyISAM AUTO_INCREMENT=105 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='知識競賽表';
優化代碼版本二
public function store(Request $request)
{
$str=$request->except('_token');
$str=implode($str);//將數組轉化為字符串(由於傳輸過來的是單個數組所以只能轉化為字符串進行操作)
$info = json_decode($str);//轉換為json數組
$arr = $info[1];//得到數組第一小數組個信息
$value='';//下面循環將第二個數組的首字符去掉然后保存為新的數組
foreach ($arr as $k=>$value) {
$value=$value;
}
$pageid=$info[0]->pageid;//得到id
$type_num=PolicePage::find($pageid);
$type_num=$type_num->page_type;
switch ($type_num){
case 0:
foreach ($value as $info){
$arr1 = [
'title' => $info->title,//題目
'type' => $info->type,//題目類型
'option_a' => $info->option_a,//A
'option_b' => $info->option_b,//B
'option_c' => $info->option_c,//C
'option_d' => $info->option_d,//D
'option_e' => $info->option_e,//E
'option_f' => $info->option_f,//F
'option_g' => $info->option_g,//G
'option_h' => $info->option_h,//H
'answer' => $info->answer,//正確答案
'pageid'=>$pageid,
];
$data=PoliceExam::create($arr1);
}
break;
case 1:
foreach ($value as $info){
$arr1 = [
'title' => $info->title,//題目
'answer' => $info->answer,//正確答案
'pageid'=>$pageid,
];
$data=PoliceExam::create($arr1);
}
break;
case 2:
foreach ($value as $info){
$arr1 = [
'title' => $info->title,//題目
'type' => $info->type,//題目類型
'option_a' => $info->option_a,//A
'option_b' => $info->option_b,//B
'option_c' => $info->option_c,//C
'option_d' => $info->option_d,//D
'option_e' => $info->option_e,//E
'answer' => $info->answer,//正確答案
'pageid'=>$pageid,
];
$data=PoliceExam::create($arr1);
}
break;
}
if($data){
return ResponseLayout::apply(true,'數據錄入成功',['data'=>$data]);
}else{
return ResponseLayout::apply(false,'數據錄入失敗',['data'=>$data]);
}
}