【发布时间】:2019-03-17 01:13:21
【问题描述】:
是否可以在 CRUD 方法中传递正确的模型对象,而无需在方法本身内部查询数据库?
如果您查看文档,您可以看到控制器的方法接受来自 URL 的 ID 作为参数。
https://laravel.com/docs/5.7/controllers
但是,如果您使用 artisan CLI 生成控制器,那么这些方法接受的不是 ID 作为参数,而是 Request 对象和/或 Model 对象,例如 Post $post。 那么,如何确保 Laravel 为我正确查询数据库并将模型作为参数传递?如果我尝试这个,视图会正确呈现,但数据不会作为响应传递。
文档中的示例方法
/**
* Show the profile for the given user.
*
* @param int $id
* @return Response
*/
public function show($id)
{
return view('user.profile', ['user' => User::findOrFail($id)]);
}
来自 CLI 生成的控制器的示例方法
/**
* Display the specified resource.
*
* @param \App\Order $order
* @return \Illuminate\Http\Response
*/
public function show(Order $order)
{
//
}
注意参数的不同。
运行工匠命令
php artisan make:model 命令 -mcr 参考:https://quickadminpanel.com/blog/list-of-16-artisan-make-commands-with-parameters/
解决方案
你不用看https://laravel.com/docs/master/routing#route-model-binding,Explicit Binding,在AppServiceProvider的boot中Router中定义模型如下:
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
Route::model('ordini', \App\Order::class);
}
【问题讨论】:
-
嗨@Mattia - 我尝试阅读您的问题,但根本无法弄清楚您的问题中的正面和反面。如果可以的话,我很乐意提供帮助,但是您能否重新编写问题,以便有一个更有条理的方法,也许还可以发布一些有问题的代码。
-
嗨@Patrick,看看我的编辑,如果您需要更多编辑,请告诉我。
标签: php laravel command-line-interface laravel-artisan