如何将store
重定向到update
方法?我尝试了以下代码:
public function store(ProductRequest $request)
{
return $this->update(new Product, $request);
}
public function update(Product $product, ProductRequest $request)
{
// code
}
但是,update
的第一个参数需要已经在数据库中的用户,并且上面的代码不能按预期工作。 (它更新db中的所有用户!)
实现这一目标的正确方法是什么?
public function store(UserRequest $request)
{
return $this->maintain(new User, $request);
}
public function update(User $user, UserRequest $request)
{
return $this->maintain($user, $request);
}
private function maintain($user, $request)
{
//code;
}
答案 0 :(得分:0)
更新方法的模型可能是问题,您的代码可以用于此部分:
Meteor accounts
例如,使用路径模型绑定:
public function store(Request $request)
{
return $this->update(new Product, $request);
}
public function update(Product $product, Request $request)
{
$product->fill($request->all())->save();
// code
}
或使用自定义绑定:
Route::resource('products', 'ProductController');
Route::model('products', App\Product::class);
确保您没有在自定义绑定中使用Route::resource('products', 'ProductController');
Route::bind('products', function($param) {
return Product::where('slug', $param)->first();
});
,它会传回一个集合。