gpt4 book ai didi

php - 隐式路由模型绑定(bind)

转载 作者:行者123 更新时间:2023-12-02 17:06:18 25 4
gpt4 key购买 nike

Laravel 的隐式路由模型绑定(bind)不起作用。它不是在查找标识符指示的记录。我得到了一个全新的模型对象。

给定这段代码:

Route::get('users/{user}', function (App\User $user, $id) {
$user2 = $user->find($id);
return [
[get_class($user), $user->exists, $user],
[get_class($user2), $user2->exists],
];
});

还有这个 URL:/users/1

我得到这个输出:

[["App\\User",false,[]],["App\\User",true]]

我使用的是 PHP 7.2 和 Laravel 5.6。


附加信息

我已经在其他 Laravel 项目中成功完成了隐式路由模型绑定(bind)。我正在处理现有的代码库。据我所知,以前没有使用过该功能。

用户记录存在。它没有被软删除。该模型不使用 SoftDeletes 特征。

我尝试过使用各种独特的路线名称和其他模型。

我已经检查了 App\Http\Kernel 类中常见的罪魁祸首。 $middlewareGroups\Illuminate\Routing\Middleware\SubstituteBindings::class,web 部分和 $routeMiddleware包含 'bindings' =>\Illuminate\Routing\Middleware\SubstituteBindings::class,

最佳答案

它应该可以在 Laravel 中正常运行。我刚刚在我的 Laravel 5.6 应用程序中验证了它,没有这个问题。

可能出现的情况:

  • 用户被软删除
  • 此路由不在 web.phpapi.php 文件中 - 这两个组都设置了 bindings(或 \Illuminate\Routing\Middleware\SubstituteBindings::class) inside $middlewareGroups property in app/Http/Kernel.php 文件
  • 您从其中一个组中删除了提到的绑定(bind)
  • 您已经设置了一些自定义绑定(bind)。例如,如果您在某处定义了这样的代码:
    路线::绑定(bind)('用户',功能($用户){
    返回新的\App\User();
    });

    然后你会得到你展示的结果,因为你使用自定义逻辑并且只返回空用户模型。

如果您认为以上所有都是错误的,我会从新的 Laravel 5.6 应用程序开始尝试重现该问题。

关于php - 隐式路由模型绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51660203/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com