【问题标题】:How to use model class to edit , destroy and get single value in laravel 8 resource controller?如何使用模型类在 laravel 8 资源控制器中编辑、销毁和获取单个值?
【发布时间】:2021-11-10 11:30:48
【问题描述】:

我想用 Laravel 8 和资源控制器开发一个 API。 以前我们使用 id 参数来编辑、删除和从数据库中获取单个值。但是现在,这里给出了模型类作为显示、编辑、更新和销毁方法中的参数。 如何在没有 id 参数的情况下使用此模型类执行 crud 操作? 我知道我有一个误解,我想弄清楚。

public function show(Food $food)
{
    //
}

public function edit(Food $food)
{
    //
}


public function update(Request $request, Food $food)
{
    //
}


public function destroy(Food $food)
{
    //
}

【问题讨论】:

    标签: laravel controller crud laravel-8


    【解决方案1】:

    这只是检索数据的更好方法。

    而不是写:

    public function show($id)
    {
        echo $id; // 12
        $food = Food::find($id); // your food instance with id 12
        echo $food->id; //12
    }
    

    你写:

    public function show(Food $food)
    {
        $food; // your food instance with id 12
        echo $food->id; //12
    }
    

    Laravel 会将路由的参数名称与控制器方法声明中的参数名称匹配,并自动为您提供正确的 Food 实例。

    您的路线应如下所示:

    Route::get('foods/{food}', [FoodController::class, 'show'])->name('foods.show');
    // for each verbs (index, show, update...)
    // the "food" parameter will be internally mapped 
    // to the $food argument inside your controller methods declaration 
    
    // or even simpler:
    
    Route::resource('foods', FoodController::class);
    // which will declare all routes for this resource
    

    这称为隐式模型绑定。可以在此处找到有关此主题的文档:https://laravel.com/docs/8.x/routing#implicit-binding

    【讨论】:

      猜你喜欢
      • 2017-12-18
      • 2021-02-06
      • 1970-01-01
      • 1970-01-01
      • 2015-07-29
      • 1970-01-01
      • 2014-09-05
      • 2018-01-16
      • 1970-01-01
      相关资源
      最近更新 更多