Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用Laravel中的前者一次更新多行_Php_Laravel 4 - Fatal编程技术网

Php 使用Laravel中的前者一次更新多行

Php 使用Laravel中的前者一次更新多行,php,laravel-4,Php,Laravel 4,我有一个表单,它包含一个设置列表,所有设置都有自己的ID,通过简单的foreach循环显示。当用户单击update按钮时,我希望能够使用Anahkiasen/Former更新所有值。但是,我似乎找不到关于如何提交多组记录的文档 例如,如果我打开表单只编辑一个设置而不是所有设置,我只需执行以下操作: {{ Former::open()->method('PUT')->action(URL::to('settings/' . $setting['id'])) }} 这会将其发送到我的“

我有一个表单,它包含一个设置列表,所有设置都有自己的ID,通过简单的foreach循环显示。当用户单击update按钮时,我希望能够使用Anahkiasen/Former更新所有值。但是,我似乎找不到关于如何提交多组记录的文档

例如,如果我打开表单只编辑一个设置而不是所有设置,我只需执行以下操作:

{{ Former::open()->method('PUT')->action(URL::to('settings/' . $setting['id'])) }}
这会将其发送到我的“更新”资源方法,以下代码将负责更新:

public function update($id)
{
    $setting = Setting::findOrFail($id);

    if ($setting->save()) {
        return Redirect::back()->with('message', "Setting #$id updated!");
    } else {
        return Redirect::back()->withInput()->withErrors($setting->errors());
    }
}
是否可以一次对多个记录执行此操作,并且仍然使用方便的
$autoHydrateEntityFromInput
$forceEntityHydrationFromInput
功能


我使用的是Laravel 4.1和以前的3.4.2。

这必须通过将值放入数组并强制刀片模板中的现有值来完成:

@foreach ($settings as $s)
<div class="row">
    {{ Former::text('values[' . $s['id'] . ']', $s['name'])->forceValue($s['value']) }}
</div>
@endforeach
这样做,标准资源将不会像
Route::resource('settings','SettingsController')那样工作Route::post('settings/update','SettingsController@update');

据我所知,在这种情况下,自动补水也不起作用

public function update()
{
    $values = Input::get('values');

    foreach ($values as $id => $val) {
        $setting = Setting::findOrFail($id);

        $setting['value'] = $val;

        if (!$setting->save()) {
            return Redirect::back()->withInput()->withErrors($setting->errors());
        }
    }

    return Redirect::back()->with('message', "Settings updated!");
}