Вставка нескольких данных в базу данных с помощью Laravel

#javascript #php #database #laravel

#javascript #php #База данных #laravel

Вопрос:

Я пытаюсь вставить несколько данных в свою базу данных с помощью array и javascript. Но случилось то, что я смог отправить только одни данные в свою таблицу жалоб. Сбалансированный не вставляется. Ошибка не появилась.

таблица пользователей

 id
role
email
typable_id
typable_type
  

таблица покупателей

 id 
name
buyer_id
address
phone_no
  

таблица дефектов

 id
name
  

таблица жалоб

 id
defect_id
image
description
report_by
  

ComplaintController.php

 class ComplaintController extends Controller
{
    public function index()
    {
        return view('buyers.complaint');
    }

    public function create(Request $request)
    {
        if (count($request->defect_id) > 0) {
            foreach($request->defect_id as $item=>$v) {
                $data = array(
                    'defect_id' => $request->defect_id[$item],
                    'image' => $request->image[$item],
                    'description' => $request->description[$item],
                    'report_by' => auth()->user()->typable->buyer_id
                );

                Complaint::insert($data);
            }
        }
        return redirect('/report-form')->with('success','Your report is submitted!');
    }

  

complaint.blade.php

 <div class="panel-heading">
   <h3 class="panel-title"><strong>Make New Report</strong></h3>
</div>
<div class="panel-body">
   <div>
      <div class="panel">
         <table class="table table-bordered">
            <thead>
            <tr>
                <th><center>Type of Defect</center></th>
                <th><center>Image</center></th>
                <th><center>Description</center></th>
                <th><center>Action</center></th>
            </tr>
            </thead>
            <tbody>
            <tr>
                <td width="20%">
                   <form action="/report-create" method="post" enctype="multipart/form-data">
                   {{ csrf_field() }}
                   <select class="form-control" name="defect_id[]">
                   <option value="" selected>Choose Defect</option>
                       @foreach(AppDefect::all() as $defect)
                       <option value="{{$defect->id}}">{{$defect->name}}</option>
                       @endforeach
                   </form>
                </td>
                <td width="15%">
                   <input type="file" class="form-control-file" name="image[]">
                </td>
                <td width="45%">
                   <input type="text" class="form-control" name="description[]">
                </td>
                <td width="10%">
                   <button type="button" class="btn btn-info btn-sm" id="add-btn"><i class="glyphicon glyphicon-plus"></i></button>
                </td>
            </tr>
            </tbody>
         </table>
      </div>
   </div>
   <center><button type="submit" class="btn btn-primary">Submit</button></center>
</div>
  

javascript в блейде

 <script>
    $(document).ready(function () {
        $('#add-btn').on('click',function () {
            var html = '';
            html  = '<tr>';
            html  = '<td><select class="form-control" name="defect_id[]"><option value="" selected>Choose Defect</option>@foreach(AppDefect::all() as $defect)<option value="{{$defect->id}}">{{$defect->name}}</option>@endforeach</td>';
            html  = '<td><input type="file" class="form-control-file" name="image[]"></td>';
            html  = '<td><input type="text" class="form-control" name="description[]"></td>';
            html  = '<td><button type="button" class="btn btn-danger btn-sm" id="remove-btn"><i class="glyphicon glyphicon-minus"></i></button></td>';
            html  = '</tr>';
            $('tbody').append(html);
        })
    });

    $(document).on('click','#remove-btn',function () {
        $(this).closest('tr').remove();
    });
</script>
  

Комментарии:

1. вы добавляете к tbody тому, что находится за пределами формы

2. Да, поместите тег открывающей формы перед тегом открывающей таблицы, а тег закрывающей формы — после тега закрывающей таблицы. Кроме того, ваша кнопка отправки, вероятно, тоже должна быть в этом теге формы, если только вы не перехватываете этот щелчок и не отправляете его вручную где-нибудь…

3. Хотя, мне интересно, <form action="/report-create" не является ли это вообще отдельной формой, и вы отправляете этот запрос через ajax или в другой форме, которая обертывает весь этот html, но не была показана….

4. Спасибо, ребята. Я не заметил, что я потерял коды. Теперь это исправлено.