表:设置
列:id
,option
和value
我想知道是否有办法一次搜索和更新多行?
以下几点:
Setting::find(array(
'option' => 'name',
'option' => 'address',
'option' => 'phone'
))->save(array(
Input::get('name'),
Input::get('address'),
Input::get('phone')
));
答案 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();
}
}