如何将商店重定向到更新方法?

时间:2015-09-25 12:43:18

标签: laravel laravel-5

如何将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;
    }

1 个答案:

答案 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(); }); ,它会传回一个集合。