2015-10-12 2 views
1

У меня есть таблица, отображаемая с данными из db, где в столбце состояния я оставил возможность изменить статус с помощью select. Я хочу иметь возможность обновить только столбец «статус», изменив параметры, и я хочу иметь возможность изменять несколько строк одной кнопкой. Раньше я могу изменить, но у меня должна быть кнопка для каждой строки.Обновление db с опциями выбора (Laravel 4)

// Код вида для столбца состояния выглядит следующим образом:

<td> 
        <select class="btn pull-left" name="status[]" id="status[]" onchange="javascript:changeStatus('{{$row->id}}','{{$arr}}')"> 
         <option>{{ $row->status }}</option> 
         <option>Eligible</option> 
         <option>Not Eligible</option> 
        </select> 
       </td> 
      </tr> 
      <input name="recordid[]" id="recordid[]" type="hidden"> 
      <?php $arr++;?> 
      @endforeach 
      <script type="text/javascript"> 
       function changeStatus(id,arr){ 
       //alert(id); 
       // $('#recordid['+arr+]').val(id); 
       // $("input[name='recordid']").eq(1).val(id); 
       $('[id^=recordid]').eq(arr).val(id); 
         // document.status.submit(); 
       } 
      </script> 

// Контроллер

public function select(){ 

     $status = Input::get('status'); 
     $id = Input::get('recordid'); 
//  print_r($id); 
//  print_r($status);exit; 
     $user = User::find($id); 
     If (isset($status)){ 
      $user->status = $status; 
      $user->save(); 
     } 
     return View::make('search')->with('status',$status); 
    } 

С print_r ид и статус я буду получать этот вывод, если я изменить параметры с идентификатором тоже, как в коде ниже, где я изменяю статус в массиве один и два.

Array ([0] => 2 [1] => 3 [2] => [3] =>) Array ([0] => Volunteer [1] => Volunteer [2] => Volunteer [ 3] => Приемлемые)

ответ

0

Вы можете обновить несколько записей Liker это:

User::>whereIn('id', $id)->update(['status' => $status]); 

Полный метод:

public function select(){ 
    $status = Input::get('status'); 
    $id = Input::get('recordid'); 

    for ($i = 0; $i <= count($status) - 1; $i++) { 
     User::where('id', $id[$i])->update(['status' => $status[$i]]); 
    // Even better 
    // User::find($id[$i])->update(['status' => $status[$i]]); 
    } 

    return View::make('search')->with('status',$status); 
} 
+0

Благодарим вас за ответ @Viktor. Я применил это, но теперь я получил эту ошибку, хотя, когда я печатаю $ status или $ id, я получил массив. Ошибка: preg_replace(): несоответствие параметров, шаблон - строка, а замена - массив –

+0

@EgzonnaGerguri, я изменил свой андер. Попробуйте этот вариант. – Viktor

+0

сделал это, но я получаю еще одну ошибку: Аргумент 1 передан в Illuminate \ Database \ Grammar :: parameterize() должен быть из массива типов, заданной строки, вызываемой в C: \ xampp \ htdocs \ FYP Project \ vendor \ laravel \ framework \ src \ Illuminate \ Database \ Query \ Grammars \ Grammar.php в строке 311 и определен –

Смежные вопросы