如何使用模型 class 编辑、销毁和获取 laravel 8 资源控制器中的单个值?

How to use model class to edit , destroy and get single value in laravel 8 resource controller?

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

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

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


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


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

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

而不是写作:

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