Laravel 5.2 使用 uuid 字符串作为 id 的隐式路由模型绑定

Laravel 5.2 implicit route model binding using uuid string as id

我正在设置一个新的 laravel 安装,并且在使用 uuid 作为 id 时遇到了隐式路由模型绑定的问题。

我的路线:

Route:group(['prefix' => 'admin'], function(){
    Route:resource('users', 'Admin\UserController');
});

Admin\UserController的显示方法:

public function show(App\User $user) {
    dd($user);
}

所以当我点击 URL my.app/admin/users/long-uuid-string-here 我希望看到用户信息但是我得到一个空的用户对象。

当我将以下内容添加到 RouteServiceProvider 时,它按预期工作:

$router->model('admin/users', \App\User::class);

有什么我遗漏的吗,隐式模型绑定需要一个整数吗?是因为在路由组里还是别的?

是!数据库中存在id,我正在使用laravel 5.2

由于您使用的是资源路由,因此路由如下:

Route::get('admin/users/{users}', 'Admin\UserController@show');

注意 {users} 变量。是复数。所以在你的展示方法中:

改变这个:

public function show(App\User $user) {
    dd($user);
}

public function show(App\User $users) {
    dd($users);
}

有点奇怪,但这就是问题所在。