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 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

EF DataBase First生成model的验证

iOS开发之遍历Model类的属性并完善使用Runtime给Model类赋值

AngularJS中实现Model缓存

model

Oracle的model语句入门-转

MODEL