2016-04-03 5 views
1

Ich wollte mehrere Zeilen in der Datenbank aktualisieren und haben einen Weg gefunden, es zu tun. aber es scheint nicht der beste Weg, es zu tun, da es in mehreren Aufrufen im Moment macht.Update multiple Zeilen in Laravel 4

Ich wollte jetzt, wenn es einen besseren Weg gibt, dies zu tun.

Die homecontroller mit der updatePersons Funktion:

<?php  
class HomeController extends BaseController { 

    public function index() 
    { 
     $persons = Person::get(); 
     return View::make('hello') 
     ->with(compact('persons')); 
    } 

    public function updatePersons() 
    { 
     $persons = Person::get(); 

     foreach ($persons as $person) { 
      $person->fname = Input::get('fname'.$person->id); 
      $person->lname = Input::get('lname'.$person->id); 

      $person->save(); 
     } 

     return Redirect::route('home')->with('succes', 'Siden er opdateret'); 
    } 

} 

die Ansicht mit der Form

@extends('layouts.master') 
@section('content') 

<div class="container"> 
    <ul class="list-group"> 
     {{ Form::open(array('route'=>'personUpdate', 'method' => 'post')) }} 
      @foreach ($persons as $person) 
       <li class="list-group-item"> 
       {{ Form::text('fname'.$person->id,$person->fname,array('class'=>'form-control', 'placeholder'=>'fname')) }} 
       {{ Form::text('lname'.$person->id,$person->lname,array('class'=>'form-control', 'placeholder'=>'lname')) }} 
       </li> 
      @endforeach 

       <li class="list-group-item"> 
       <div class="box-footer"> 
          <button type="submit" class="btn btn-primary">Update</button> 
         </div> 
       </li> 
     {{ Form::close() }} 
    </ul> 
</div> 
</div> 
@stop 

Die Routen:

<?php 

Route::get('/', array('as'=>'home', 'uses'=>'[email protected]')); 

Route::post('/', array('as'=>'personUpdate', 'uses'=>'[email protected]')); 

Ich habe versucht, die savemany() Funktion auf $persons zu verwenden nach der foreach l oop in updatePersons(), aber ohne Ergebnisse.

Antwort

1

Wenn Sie viele Zeilen mit jeweils unterschiedlichen Werten aktualisieren, gibt es keinen einfacheren Weg.

Können Sie sich vorstellen, wie Sie dies in SQL schreiben würden?