使用Laravel 7将数组插入数据库

使用Laravel 7将数组插入数据库,laravel,laravel-7,Laravel,Laravel 7,我想在数据库中插入候选语言信息,并且只针对经过身份验证的用户。候选人可以添加更多的语言。为经过身份验证的用户插入所有信息。经过身份验证的候选人也可以 以下是我的查看代码: <form action="{{url('/candidate/addLanguage')}}" method="post"> @csrf <!-- Education

我想在数据库中插入候选语言信息,并且只针对经过身份验证的用户。候选人可以添加更多的语言。为经过身份验证的用户插入所有信息。经过身份验证的候选人也可以

以下是我的查看代码:

  <form action="{{url('/candidate/addLanguage')}}" method="post">
      @csrf    
                         
    
       <!-- Education -->
       <div class="form with-line">
          <h5>Language  Proficiency</h5>
              <div class="form-inside">
                <!-- Add Education -->
            <div class="form boxed box-to-clone education-box">
<a href="#" class="close-form remove-box button"><i class="fa fa-close"></i></a>
    
 <div class="form-row">
  <div class="form-group col-md-6">
     <label for="inputEmail4"> Language</label>
     <input type="text" name="txt_language[]" class="form-control" id="inputEmail4" placeholder="Language">
      </div>
     <div class="form-group col-md-6">
    <label for="inputPassword4">Reading</label>
       <select name="txt_reading[]" id="" class="form-control">
       <option value="#" selected>Choose..</option>
      <option value="High">High</option>
        <option value="Medium">Medium</option>
        <option value="Low">Low</option>
    </select>
   </div>
 </div>
<div class="form-row">
     <div class="form-group col-md-6">
         <label for="inputEmail4"> Writing</label>
          <select name="txt_writing[]" id="" class="form-control">
           <option value="#" selected>Choose..</option>
           <option value="High">High</option>
           <option value="Medium">Medium</option>
           <option value="Low">Low</option>
         </select>
   </div>
 <div class="form-group col-md-6">
   <label for="inputPassword4">Speaking</label>
   <select name="txt_speaking[]" id="" class="form-control">
       <option value="#" selected>Choose..</option>
       <option value="High">High</option>
       <option value="Medium">Medium</option>
        <option value="Low">Low</option>
   </select>
  </div>
 </div>
</div>
    
<a href="#" class="button gray add-education add-box"><i class="fa fa-plus-circle"></i> Add Language</a>
</div>
</div>
<button type="submit" class="btn btn-success btn-sm float-right">Submit</button>
 </form>
我得到这个错误:

 Attempt to assign property 'candidate_id' of non-object
我哪里漏了什么?如何解决此错误?请帮忙

其“dd($request->all());”输出:

Jquery代码:

 $('.box-to-clone').show();
    $('.add-box').on('click', function(e) {
        e.preventDefault();
        var newElem = $(this).parent().find('.box-to-clone:first').clone();
        newElem.find('input').val('');
        newElem.prependTo($(this).parent()).show();
        var height = $(this).prev('.box-to-clone').outerHeight(true);
        $("html, body").stop().animate({ scrollTop: $(this).offset().top-height}, 600);
    });
    $('body').on('click','.remove-box', function(e) {
        e.preventDefault();
        $(this).parent().remove();
    });

请按以下格式填写:

foreach ($request->txt_language as $language => $l){
    $data = new  Language;
    $data->candidate_id => $candidateID,
    $data->language =>  $request->txt_language[$language],
    $data->reading =>  $request->txt_reading[$language],
    $data->writing =>  $request->txt_writing[$language],
    $data->speaking =>  $request->txt_speaking[$language],                 
    $data->save();
}
希望这能解决你的问题。如果您面临进一步的问题,请告诉我。

试试以下方法:

  public function addLanguage(Request $request){

    $candidateID =  Auth::guard('candidate')->user()->id;
   if(!empty($candidateID)){
    if (count($request->txt_language) > 0){
        foreach ($request->txt_language as $language => $l){
                 Language::create([
                 'candidate_id' =>  $candidateID,
                'language' =>  $l,
                'reading' =>  $request->txt_reading[$language],
                'writing' =>  $request->txt_writing[$language],
                'speaking' =>  $request->txt_speaking[$language],
           ]);
        }
       }
      return redirect('/candidate/referencesForm')->with('success','Language Information Save Successfully..');
    }
     abort(404);
}

我们发现这个问题有点令人困惑。。请你再详细说明一下你在尝试什么和你的期望,好吗?我有一份“语言”表格供认证的候选人填写。我想使用特定候选对象的表单将数据插入数据库。候选对象可以添加更多语言并全部插入该特定候选对象。但是我在这行“$language->candidate\u id=>$candidateID”中得到了这个错误,尝试$data=language::create([$language->candidate\u id=>$candidateID,…]);获取此错误时,您缺少箭头“正在尝试获取非对象的属性'candidate_id'。我的错误,$data=Language::create(['candidate_id'=>$candidateID,…]);现在“正在尝试获取非对象的属性'candidate_id'”获取此错误。是的,这是有效的,但仅针对一行。我想为1个候选行添加乘法行。数据保存到数据库中,但如果我输入2行,则得到1行。打印($data)仅显示1个数据。其他数据丢失。
foreach ($request->txt_language as $language => $l){
    $data = new  Language;
    $data->candidate_id => $candidateID,
    $data->language =>  $request->txt_language[$language],
    $data->reading =>  $request->txt_reading[$language],
    $data->writing =>  $request->txt_writing[$language],
    $data->speaking =>  $request->txt_speaking[$language],                 
    $data->save();
}
  public function addLanguage(Request $request){

    $candidateID =  Auth::guard('candidate')->user()->id;
   if(!empty($candidateID)){
    if (count($request->txt_language) > 0){
        foreach ($request->txt_language as $language => $l){
                 Language::create([
                 'candidate_id' =>  $candidateID,
                'language' =>  $l,
                'reading' =>  $request->txt_reading[$language],
                'writing' =>  $request->txt_writing[$language],
                'speaking' =>  $request->txt_speaking[$language],
           ]);
        }
       }
      return redirect('/candidate/referencesForm')->with('success','Language Information Save Successfully..');
    }
     abort(404);
}