我希望使用一个表单来同时创建和更新。这两种操作都通过这个方法保存:
public function store() {
$data = Input::all();
$data['company_id'] = Auth::user()->company_id;
$validator = Validator::make($data, Feature::$rules);
if($validator->fails()) {
return Redirect::back()->withErrors($validator)->withInput();
}
Feature::firstOrNew(['id' => Input::get('id')])->update($data);
return Redirect::route('features.index');
}
如何改写这一行:
Feature::firstOrNew(['id' => Input::get('id')])->update($data);
那么它就不需要先从数据库获取对象吗? 没有必要这样做; 我什么都不会做。 如果 Input::get('id')
被设置,它应该发出一个 INSERT
,否则应该发出一个 UPDATE
。
ON DUPLICATE KEY UPDATE
风格的查询来完成;我们可以在 PHP 端进行分支。虽然在数据库端执行会更可靠,以防止在您开始编辑和单击保存之间有人删除记录。 - mpen