在laravel 4中更新多行

时间:2016-04-03 13:06:08

标签: php laravel laravel-4 eloquent laravel-4.2

我想更新数据库中的多行,并找到了一种方法。但它似乎不是最好的方法,因为它目前正在多次通话中进行。

如果有更好的方法,我现在想要这样做。

具有homecontroller功能的updatePersons

<?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');
    }

}

带有表单的视图

@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

路线:

<?php

Route::get('/', array('as'=>'home', 'uses'=>'HomeController@index'));

Route::post('/', array('as'=>'personUpdate', 'uses'=>'HomeController@updatePersons'));

我尝试在savemany()中的foreach循环之后使用$persons上的updatePersons()函数,但没有结果。

1 个答案:

答案 0 :(得分:1)

如果您要使用不同的值更新多行,那么就没有更简单的方法了。

你能想到你在SQL中如何写这个吗?