【发布时间】:2019-01-10 14:44:03
【问题描述】:
Laravel 的隐式路由模型绑定不起作用。它不查找标识符指示的记录。我得到了一个全新的模型对象。
鉴于此代码:
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],
];
});
这个网址:/users/1
我得到这个输出:
[["App\\User",false,[]],["App\\User",true]]
我使用的是 PHP 7.2 和 Laravel 5.6。
其他信息
我已经在其他 Laravel 项目中成功完成了隐式路由模型绑定。我正在研究现有的代码库。据我所知,该功能以前没有使用过。
用户记录存在。它没有被软删除。该模型不使用SoftDeletes trait。
我已经尝试过使用各种独特的路线名称和其他模型。
我已经检查了App\Http\Kernel 类的常见罪魁祸首。 $middlewareGroups 在web 部分中有\Illuminate\Routing\Middleware\SubstituteBindings::class,,$routeMiddleware 包含'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,。
【问题讨论】:
-
是否对模型进行了任何自定义?列别名、行为等。
-
用户实际存在。我从一个资源控制器和一个完全不同的模型开始了这次跋涉。您在我尝试提供minimal reproducible example 上方看到的内容。它告诉我 Laravel 中的某些内容配置不正确。
-
听起来
SubstituteBindings没有运行。
标签: php laravel laravel-5 laravel-routing laravel-5.6