Laravel:大规模搜索和更新

时间:2014-05-01 11:36:36

标签: php laravel laravel-4

表:设置

列:idoptionvalue

我想知道是否有办法一次搜索和更新多行?

以下几点:

Setting::find(array(
    'option' => 'name',
    'option' => 'address',
    'option' => 'phone'
))->save(array(
    Input::get('name'),
    Input::get('address'),
    Input::get('phone')
));

2 个答案:

答案 0 :(得分:1)

是的,您可以使用查询构建器来执行此操作。

$updates = array(
    'name' => Input::get('name'),
    'address' => Input::get('address'),
    'phone' => Input::get('phone')
);

DB::table('settings')
        ->where('id', 1)
        ->update($updates);

答案 1 :(得分:0)

或者,我可以通过在Settings模型中添加自定义方法来实现相同的目标,我的工作代码:

<强>控制器

Setting::massUpdate(array(
            'company_name' => Input::get('company_name'),
            'company_slogan' => Input::get('company_slogan'),
            'company_abn' => Input::get('company_abn'),
            'company_acn' => Input::get('company_acn'),
            'company_address' => Input::get('company_address'),
            'company_phone' => Input::get('company_phone'),
            'company_email' => Input::get('company_email'),
            'money_split' => Input::get('money_split'),
            'fuel_levy' => Input::get('fuel_levy'),
            'booking_cancel_fee' => Input::get('booking_cancel_fee'),
            'booking_hourly_fee' => Input::get('booking_hourly_fee'),
        ));

<强>模型

public static function massUpdate($settings)
    {
        foreach ( $settings as $option => $value )
        {
            $setting = Setting::where('option', '=', $option)->first();
            $setting->value = isset( $value ) ? $value : '';
            $setting->save();
        }
    }