2014-05-01 54 views
0

表:設置Laravel:大規模搜索和更新

列:idoptionvalue

我想知道如果有一種方法來搜索和更新一個多行去?

沿東西這些行:

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

回答

1

呀,你可以使用查詢生成器來做到這一點。

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

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

非常感謝UCH!你剛剛給了我一個想法:) – adamj

0

或者,我可以通過添加自定義方法進入設置模式來達到同樣的,我的工作代碼:

控制器

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(); 
     } 
    }