php - Laravel 5.0: How to update an array of data: preg_replace(): Parameter mismatch, pattern is a string while replacement is an array -


i absolute beginner of laravel. dealing error "preg_replace(): parameter mismatch, pattern string while replacement array" when try update array of data.

does know way solve error? if need more information, please leave comments.

any advice appreciated. in advance!

logscontroller.php

public function update(createlogrequest $request, $course_id){      $count = count($request->input('weeks'));     $input = $request->all();     $logs = array();      ($i = 0; $i < $count; $i++){         if($input['weeks'][$i]){             array_push($logs, array(                 'user_id' => \auth::user()->id,                 'course_id' => $course_id,                 'weeks' => $i + 1,                 'work_description' => $input['work_description'][$i],                 'instructor_comments' => $input['instructor_comments'][$i],                 'status' => $input['status'][$i],                 'created_at' => carbon::now(),                 'updated_at' => carbon::now(),             ));         }     }     $log->update($logs);     return redirect('/student/home'); } 

when put code dd($logs), result below.

array:2 [▼   0 => array:8 [▼   "user_id" => "1"   "course_id" => "39"   "weeks" => 1   "work_description" => "fadfad"   "instructor_comments" => "fdasfda"   "status" => "accepted"   "created_at" => carbon {#219 ▶}   "updated_at" => carbon {#212 ▶} ]  1 => array:8 [▼    "user_id" => "1"    "course_id" => "39"    "weeks" => 2    "work_description" => "fadsfad"    "instructor_comments" => "fdasfdasfad"    "status" => "accepted"    "created_at" => carbon {#218 ▶}    "updated_at" => carbon {#222 ▶}  ] ]   

log_edit.blade.php

{!! form::hidden('course_id', $course->id) !!}     @foreach($logs $log)         <tbody>         <tr>             <td>                 {{ $log->weeks }}                 {!! form::hidden('weeks[]', $log->weeks) !!}             </td>              <td> {!! form::textarea('work_description[]', $log->work_description) !!}  </td>              <td> {!! form::textarea('instructor_comments[]', $jlog->instructor_comments) !!} </td>              <td> {!! form::select('status[]',                         array('accepted' => 'accepted',                               'pending' => 'pending',                               'declined' => 'declined',                       ), $log->status) !!}             </td>         </tr>         @endforeach          </tbody> 

here problem:

$log->update($logs); 

update method not taking multidimensional array.

your logscontroller.php should this:

public function update(createlogrequest $request, $course_id, log $log){      $input = $request->all();      foreach ($input['weeks'] $i => $log_id){         $data = [           'user_id' => \auth::user()->id,           'course_id' => $course_id,           'weeks' => $i + 1,           'work_description' => $input['work_description'][$i],           'instructor_comments' => $input['instructor_comments'][$i],           'status' => $input['status'][$i],           'created_at' => carbon::now(),           'updated_at' => carbon::now(),         ];          $log->where('id', $log_id)->update($data);     }      return redirect('/student/home'); } 

Comments

Popular posts from this blog

java - nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet Hibernate+SpringMVC -

sql - Postgresql tables exists, but getting "relation does not exist" when querying -

asp.net mvc - breakpoint on javascript in CSHTML? -