Неопределенный индекс: Джавабан - PullRequest
0 голосов
/ 25 января 2019

Я хочу ввести несколько данных в базу данных, используя массив, но я получил сообщение об ошибке.Код приведен ниже:

ClusterController

$jawaban = $request->jawaban;

$data = [];
if($jawaban != null || $jawaban == false){
  for($i=1; $i<=count($jawaban['jawaban']); $i++){
     $data[] = array('jawaban' => $jawaban[$i]['jawaban']);
  }

  $store = Soal::where('cluster_id', $id)->update($data);
  return dd($store);
}

showexam.blade.php

    <form action="/jawaban/store/{{$model[$i]->id}}" method="post" enctype="multipart/form-data"> 
    @csrf
        <table id="datatable" style="width:100%">
        <tbody>           
            <tr>{{$i+1}}. </tr>
            <tr>{{$model[$i]->soal}}</tr>
            <ol type="A" style="">
                <li> {{$model[$i]->A}}</li>
                <li> {{$model[$i]->B}}</li>
                <li> {{$model[$i]->C}}</li>
                <li> {{$model[$i]->D}}</li>
                <li> {{$model[$i]->E}}</li>
            </ol>
            <input list="browsers" name="jawaban[]">
            <datalist id="browsers">
              <option value="A">
              <option value="B">
              <option value="C">
              <option value="D">
              <option value="E">
            </datalist>
        @endfor
            <button type="submit" class="btn btn-primary text-right" id="modal-btn-save">Done</button>
    </form>

screenshot

1 Ответ

0 голосов
/ 25 января 2019

count($jawaban['jawaban'])

У вас уже есть массив с именем jabawan, который вы получили с помощью $jawaban = $request->jawaban;

У jabawan будет нормальный счетный массив $jabawan = ['A', 'B']

У него не будет индекса jabawan.

Если бы вы сделали что-то вроде

$jabawan = post();

Вы можете использовать свой код, но вы можете просто использовать

for($i=0; $i<count($jawaban); $i++){
   $data[] = array('jawaban' => $jawaban[$i]);
}

Изменить Soal::where('cluster_id', $id)->update($data);

в

if ($soal_model = Soal::find( $id )) {
   $soal_model->update($data);
}

Проблема в том, что вы никогда не вызываете get() для объекта запроса или first() для коллекции, которую возвращает get().

Используя find() Вы получаете объект обратно или ноль, если он не существует. Оборачивая это в оператор if, обновление будет выполняться только для существующего объекта, что предотвращает ошибки при попытке обновить нулевое значение.

Кроме того, вы не можете вернуть dd().

dd означает «брось и умри», я думаю, по крайней мере, это то, что я прочитал в него, потому что это то, что он делает.

Он сбрасывает данные и затем убивает процесс. Таким образом, все обработчики возврата laravel не будут вызываться после вашего dd() вызова. Вы убили процесс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...