Laravel: preg_replace(): Parameter mismatch, pattern is a string while replacement is an array

后端 未结 2 1289
感动是毒
感动是毒 2021-01-13 11:57

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

相关标签:
2条回答
  • 2021-01-13 12:45

    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

    0 讨论(0)
  • 2021-01-13 12:46

    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();
    }
    
    0 讨论(0)
提交回复
热议问题