show(Model $model) 在 Laravel 7 中不起作用
Posted
技术标签:
【中文标题】show(Model $model) 在 Laravel 7 中不起作用【英文标题】:show(Model $model) is not working in Laravel 7 【发布时间】:2020-08-18 19:56:29 【问题描述】:我创建了一个模型控制器。在show(ModelName $model)
中,我定义了方法:
`
show(ModelName $model)
return response()->json(['data'=>$model]);
`,但它没有按预期工作。它应该返回模型及其属性,但它返回的是一个空数组。 我的路线是:
Route::resource('model','ModelController');
型号:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Notifications\Notifiable;
class ModelName extends Model
use Notifiable,SoftDeletes;
protected $fillable = [
'name',
];
所有其他方法都返回预期值。只是 show 方法无法正常工作。我尝试使用
show($id)
$model = ModelName::findOrFail($id)
return response()->json(['data'=>$model]);
这很好用,但我不能使用show(Model $model)
这种类型的函数调用。我可以通过相同的方法检索用户数据。
我无法弄清楚问题是什么。有人有解决办法吗?
【问题讨论】:
我以Model和ModelName为例,在我的项目中,它们是用自己的名字定义的,希望命名没有错误。 我认为这可能是问题所在。您已使用“Model”对方法的参数进行类型提示,但该类名为“ModelName”。 很难诊断,因为您没有在控制器代码的示例 sn-p 中包含“use...”语句。 我已经编辑了代码,现在你可能清楚了。问题不在于。 你可以尝试使用显式绑定,如果它不起作用laravel.com/docs/7.x/routing#explicit-binding 【参考方案1】:通过 cmd php artisan route:list --name=Model
检查您的路线列表
uri 中的匹配大小写与您的 (Model $model) 相同,
$model 应该与 uri 中的 model 相同(区分大小写)
【讨论】:
【参考方案2】:尝试在ModelController
中指定您的模型,如下所示:
class ModelController extends Controller
protect $model = ModelName::class;
【讨论】:
以上是关于show(Model $model) 在 Laravel 7 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章