【问题标题】:how to submit multiple entries in database table using laravel?如何使用 laravel 在数据库表中提交多个条目?
【发布时间】:2020-11-10 02:10:15
【问题描述】:

我是 laravel 的初学者,我想将多条记录添加到数据库表中,我在下面有一个返回的请求,但我不知道如何将数据提交到表中如何在控制器中创建逻辑有人知道如何要做到这一点,请帮助我,谢谢。 数据库表

    projectissue table  

     Id  | task  | date| project_id

控制器

         public function issuesUpdate(Request $request,Project $project)
         {


              return redirect()->route('project');
         }

return $request

               {
  "_token": "S6typbw0hywPqaUdxCTqWeJNieyl3VieQhCHqDZ7",
    project_id=42;
  "date": [
    "2020-07-06",
    "2020-07-22",
    "2020-07-11"
  ],
  "issue": [
    "dsfsdfsdfsdf",
    "dsfsdfsdfsdf",
    "dsfsdfsdfsdf"
  ]
}

路线

  Route::post('/projects/{project}/issues/update', "ProjectController@issuesUpdate")- 
  >name('project.issues.update');

HTML 视图

     <form action="{{ route('project.issues.update',[$project->id])}}" method="POST">
      @csrf    
      <div class="portlet">
        <div class="portlet-heading bg-light-theme">
          <h3 class="portlet-title">
            <span class="ti-user mr-2">
            </span>Add Issues
          </h3>
          <div class="portlet-widgets">
            <span class="divider">
            </span>
            <button type="submit"  class="btn btn-white waves-effect btn-rounded">
              <span class="btn-label">
                <i class="fa fa-save">
                </i>
              </span> Save
            </button>
          </div>
          <div class="clearfix">
          </div>
        </div>
        <div id="bg-inverse" class="panel-collapse collapse show" style="">
          <div class="portlet-body">
            <div class="card-box">
              <div class="row">
                <div class="col-md-12 mt20">
                  <div class="addMore">
                    <div class="addmore_cont">
                      <div class="addMore_btn">
                       
                        <div class="mt12 pull-right">
                          <button type="button" title="Add More" class="btn btn-success waves-effect waves-light btn-sm add_more" data-key="">
                            <i class="fa fa-plus">
                            </i>
                          </button>
                        </div>
                        <div class="row addmore_issues">
                          <div class="col-md-12">
                            <div class="row">
                              <div class="col-md-5">
                                <div class="form-group">
                                  <input required type="date" value="" name="date[]" class="form-control"
                                         aria-describedby="emailHelp" >
                                </div>
                              </div>
                              <div class="col-md-5">
                                <div class="form-group">
                                  <input required type="text" value="" name="issue[]" class="form-control"
                                     aria-describedby="emailHelp" placeholder="task...">
                                </div>
                              </div>
                              <div class="col-md-1 mt12">
                                <button type="button" class="btn btn-danger waves-effect waves-light btn-sm delete">
                                  <i
                                     class="fa fa-times">
                                  </i>
                                </button>
                              </div>
                            </div>
                          </div>
                        </div>
                      </div>
                    </div>
                  </div>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
    </form>

【问题讨论】:

    标签: laravel


    【解决方案1】:
    $dates = request('date');
    $issues = request('issue');
    
    for($i = 0; $i < count($issues); $i++)
    {
    
        $issue = new ProjectIssue();
        $issue->task = $issues[$i];
        $issue->date = $dates[$i];
        $issue->project_id = //however you're getting your project id to the controller;
        if($issue->save()){
           continue;
        } else {
          //process error the way you want
        }
    
    
    }
    

    所以我的代码正在做的是将请求数组存储在一个变量中,并循环遍历表单提交的问题数量。对于存在的每个问题,它都会在表中创建一个新条目,然后继续下一个。我在命名事物的方式上做了一些假设,但这应该足以让你开始。

    【讨论】:

      【解决方案2】:

      我建议先阅读文档:https://laravel.com/docs/7.x/eloquent。文档写得很好。不要忘记使用表单请求验证数据(如果你问我推荐的方式):https://laravel.com/docs/7.x/validation#form-request-validation

      我会给你一个先机:

      
      class YourFormRequest
      {
          public function rules()
          {
              return [
                  'date'    => ['required', 'array'],
                  'date.*'  => ['required', 'date'],
                  'issue'   => ['required', 'date'],
                  'issue.*' => ['required', 'string'],
              ];
          }
      }
      
      class SomeController
      {
          public function issuesUpdate(YourFormRequest $request)
          {
              foreach ($request->post('date') as $i => $value) {
                  ProjectIssue::insert([
                      'attribute' => $request->post(),
                  ]);
              }
      
              return redirect()->route('project');
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2014-10-12
        • 2015-07-20
        • 2020-03-02
        • 2016-12-21
        • 1970-01-01
        • 2022-11-22
        • 2015-10-29
        • 2018-10-25
        相关资源
        最近更新 更多