Laravel: preg_replace(): Parameter mismatch, patte

2019-02-18 09:44发布

问题:

I want to save my results in the database but im getting an error exception.

In my view I have a radio button(array) that gets the result of each student which is present,late,absent,others

Here's my view

  <td>{{ $users->student_id  }} </td>
  <td>{{ $users->student_firstname }} {{ $users->student_lastname }}</td> 
  <td>{{ Form::radio('result['.$users->student_id.']', 'present' , true) }}</td>
  <td>{{ Form::radio('result['.$users->student_id.']', 'late' ) }}</td>
  <td>{{ Form::radio('result['.$users->student_id.']', 'absent') }}</td>
  <td>{{ Form::radio('result['.$users->student_id.']', 'others') }}</td>

Here's my controller

  $attendance = new Attendances();
  $attendance->status = Input::get('result');
  $attendance->comment = Input::get('comment');
  $attendance->save();

回答1:

Your radio input result will return an array, due to the naming convention you have chosen.

If you wish to save the singular value of the input result, use the following format.

View code:

<td>{{ Form::radio('result', 'present' , true) }}</td>
<td>{{ Form::radio('result', 'late') }}</td>
<td>{{ Form::radio('result', 'absent')   }}</td>
<td>{{ Form::radio('result', 'others')  }}</td>

If you are expecting multiple values in an array, then you should be looping through the code, and saving each individually:

Controller Code:

foreach (Input::get('result') as $studentId=>$value)
{
     $attendance = new Attendances();
     $attendance->status = $value;
     $attendance->comment = Input::get('comment');
     //We should save the student id somewhere.
     $attendance->student_id = $studentId;
     $attendance->save();
}

Suggestion:

If you wish to save several student's information on the same form, the suggestion below will work great.

View Code:

<td>{{ $users->student_id  }} </td>
<td>{{ $users->student_firstname }} {{ $users->student_lastname }}</td> 
<td>{{ Form::radio('student['.$users->student_id.'][status]', 'present' , true) }}</td>
<td>{{ Form::radio('student['.$users->student_id.'][status]', 'late' ) }}</td>
<td>{{ Form::radio('student['.$users->student_id.'][status]', 'absent') }}</td>
<td>{{ Form::radio('student['.$users->student_id.'][status]', 'others') }}</td>
<td>{{ Form::text('student['.$users->student_id.'][comment]'}}</td>

Controller Code for saving

//We loop through each student and save their attendance.
foreach (Input::get('student') as $studentId=>$data)
{
     $attendance = new Attendances();
     $attendance->status = $data['status'];
     $attendance->comment = $data['comment'];
     //We should save the student id somewhere.
     $attendance->student_id = $studentId;
     $attendance->save();
}


回答2:

I had a similar error, where using

$attendance->fill(array with non-existing columns);

sets a non-existing column value, so on calling

$attendance->save();

afterwards, it will throw that error