如何使用模型类在 laravel 8 资源控制器中编辑、销毁和获取单个值?
Posted
技术标签:
【中文标题】如何使用模型类在 laravel 8 资源控制器中编辑、销毁和获取单个值?【英文标题】:How to use model class to edit , destroy and get single value in laravel 8 resource controller? 【发布时间】: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)
//
【问题讨论】:
【参考方案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
【讨论】:
以上是关于如何使用模型类在 laravel 8 资源控制器中编辑、销毁和获取单个值?的主要内容,如果未能解决你的问题,请参考以下文章
在 PHPUnit 中调用路由时如何在 Laravel 8 中模拟 Eloquent 模型
如何正确地将排序模型从我的控制器发送到 Laravel API 资源集合?
如何通过控制器将两个不同模型的值作为 Laravel 8 中的单个返回变量传递给视图文件