【问题标题】:How to Populate MySQL Database with JSON array of objects in Laravel?如何在 Laravel 中使用 JSON 对象数组填充 MySQL 数据库?
【发布时间】:2021-01-13 23:29:54
【问题描述】:

我正在尝试使用表单生成器创建动态调查“表单”。我通过 AJAX 请求获取 JSON 对象数组。我的工作是存储“表单”相关数据,例如field_typelabelname 等。我可以解码数组,但我不知道如何根据他们的桌子。

表单可以包含多种不同的字段类型。比如收音机、选择框等。

//Controller.php

 public function ajaxdata(Request $request){

        $data= json_decode($request->id,true);

        foreach ($data as $key => $value) {
             
          if(isset($value['values'])){
            
            $group[] = $value['values'];

            foreach($group as $group_member){

                if($group_member['selected']==true){
                    $selected = $group_member['value'];
                }
                
            }

          }
                $value_label[] = $value['label'];
                $value_name[]  = $value['name'];
                $value_type[] = $value['type'];
                

                }
 return response()->json($data);
    }

以下是我要填充的表格。

我想填充如下。

【问题讨论】:

    标签: php json laravel model-view-controller multidimensional-array


    【解决方案1】:

    如果有人需要下面的解决方案是完整的代码。

        public function ajaxdata(Request $request){
    
            $data= json_decode($request->id,true);
    
            foreach ($data as $key => $value) {
                 
              if(isset($value['values'])){
    
                foreach ($value['values'] as $group) {
    
                    if($group['selected']==true && $value['name']=='group'){
    
                    $s_group_id = $group['value'];
    
                }
     
                }
                
                
                // major if ending for values checking
              }
    
                    $value_label[] = $value['label'];
                    $value_name[]  = $value['name'];
                    $value_type[] = $value['type'];
                    if(isset($value['values'])){
                    $value_values[] = $value['values'];
                    
                    }
                   
    
    
             // major foreach ending  
    
            }   
    
            
    
            // query for  create survey_ table
    
            $id = DB::table('survey_records')
            ->insertGetId(array(
                's_assign_by' => Auth::user()->user_type,
                's_group_id' => $s_group_id,
                "created_at" =>  \Carbon\Carbon::now(), # new \Datetime()
                "updated_at" => \Carbon\Carbon::now(),  # new \Datetime()
            ));
    
            // // query for creating survey_fields
    
            $row = count($value_label);
    
    
             $textcounter = 0;
             $selectoncounter = 0;
             $radiocounter = 0;
             $passwordcounter = 0;
             $textareacounter = 0;
             $checkboxcounter=0;
             $counter;
             $field_number;
            for($i=0;$i<$row;$i++){
    
            if($value_type[$i]=='text'){
                $textcounter++;
                $counter = $textcounter;
                $field_number=1;
            }
    
            elseif($value_type[$i]=='select') {
                $selectoncounter++;
                $counter = $selectoncounter;
                $field_number=2;
            }
    
            elseif($value_type[$i]=='radio-group'){
                $radiocounter++;
                $counter = $radiocounter;
                $field_number=3;
            }
    
            elseif($value_type[$i]=='textarea'){
                $textareacounter++;
                $counter = $textareacounter;
                $field_number=4;
            }
    
            elseif($value_type[$i]=='checkbox-group'){
                $checkboxcounter++;
                $counter = $checkboxcounter;
                $field_number=5;
            }
    
    
            $field_id =  DB::table('survey_fields')
            ->insertGetId(array(
                'survey_id' => $id,
                'field_number' => $field_number,
                'field_label' => $value_label[$i],
                'field_type' => $value_type[$i],
                'field_added_by' => Auth::user()->user_type,
                'field_counter' => $counter,
                "created_at" =>  \Carbon\Carbon::now(), # new \Datetime()
                "updated_at" => \Carbon\Carbon::now(),  # new \Datetime()
            ));
    
    
             // database query for option_fields
    
             
              
              if($value_type[$i] =='text'){
    
                $opt_id =  DB::table('survey_options')
            ->insertGetId(array(
                'survey_id' => $id,
                'field_id' => $field_id,
                'opt_heading' => $value_label[$i],
                'opt_added_by' => Auth::user()->user_type,
                "created_at" =>  \Carbon\Carbon::now(), # new \Datetime()
                "updated_at" => \Carbon\Carbon::now(),  # new \Datetime()
            ));
    
            // if text and textarea ending
    
              }
    
              if($value_type[$i] =='textarea'){
    
                $opt_id =  DB::table('survey_options')
            ->insertGetId(array(
                'survey_id' => $id,
                'field_id' => $field_id,
                'opt_heading' => $value_label[$i],
                'opt_added_by' => Auth::user()->user_type,
                "created_at" =>  \Carbon\Carbon::now(), # new \Datetime()
                "updated_at" => \Carbon\Carbon::now(),  # new \Datetime()
            ));
    
            // if textarea ending
    
              }
    
    
              elseif($value_type[$i] =='select'){
    
                $select_label =$data[$i]['values']; 
    
                // $selectrow = count($select_label);
                $selectrow = count($select_label);
    
    
                for($j=0;$j<$selectrow;$j++){
                $opt_id =  DB::table('survey_options')
            ->insertGetId(array(
                'survey_id' => $id,
                'field_id' => $field_id,
                'opt_heading' => $select_label[$j]['label'],
                'opt_added_by' => Auth::user()->user_type,
                "created_at" =>  \Carbon\Carbon::now(), # new \Datetime()
                "updated_at" => \Carbon\Carbon::now(),  # new \Datetime()
            ));
    
            // for ending for select
                }
        // elseif ending
                }
    
    
    
              elseif($value_type[$i] =='checkbox-group'){
    
                 $check_label =$data[$i]['values']; 
                 $checkrow = count($check_label);
    
                for($k=0;$k<$checkrow;$k++){
                $opt_id =  DB::table('survey_options')
            ->insertGetId(array(
                'survey_id' => $id,
                'field_id' => $field_id,
                'opt_heading' => $check_label[$k]['label'],
                'opt_added_by' => Auth::user()->user_type,
                "created_at" =>  \Carbon\Carbon::now(), # new \Datetime()
                "updated_at" => \Carbon\Carbon::now(),  # new \Datetime()
            ));
    
            // for ending for checkbox
                }
              
      // elseif ending
    }
    
               elseif($value_type[$i] =='radio-group'){
                 $radio_label =$data[$i]['values']; 
               $radiorow = count($radio_label);
                
                // $radioroworg[] = $value_values[$i];
                // $radiorow = count($radioroworg);
    
                for($l=0;$l<$radiorow;$l++){
                $opt_id =  DB::table('survey_options')
            ->insertGetId(array(
                'survey_id' => $id,
                'field_id' => $field_id,
                'opt_heading' =>$radio_label[$l]['label'],
                'opt_added_by' => Auth::user()->user_type,
                "created_at" =>  \Carbon\Carbon::now(), # new \Datetime()
                "updated_at" => \Carbon\Carbon::now(),  # new \Datetime()
            ));
    
            // for ending for radio
                }
    
      // elseif ending
    }
    
            // ending main for loop
    
            }
    
            
    
            // dd(json_decode($true));
                
                  return response()->json($data);
            }
    

    填充表格图片

    【讨论】:

      猜你喜欢
      • 2021-03-12
      • 1970-01-01
      • 1970-01-01
      • 2014-02-07
      • 2017-05-08
      • 2010-12-01
      • 2018-07-07
      • 2020-03-14
      • 2013-05-03
      相关资源
      最近更新 更多