我想更新数据库中的多行,并找到了一种方法。但它似乎不是最好的方法,因为它目前正在多次通话中进行。
如果有更好的方法,我现在想要这样做。
具有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()
函数,但没有结果。
答案 0 :(得分:1)
如果您要使用不同的值更新多行,那么就没有更简单的方法了。
你能想到你在SQL中如何写这个吗?