我在Laravel 5.5中的模型绑定有问题。
我的api.php中有
Route::group(['prefix'=>'tasks'], function() {
Route::get('delete/{task}', 'TaskController@delete');
});
在我的控制器中:
public function delete(Request $request, Task $task){
var_dump($task->id);
}
在我的RouteServiceProvider中:
public function boot()
{
parent::boot();
Route::model('task', 'App\Models\Task');
}
在我的App \ Http \ Kernel中
'api' => [
'throttle:60,1',
'bindings',
],
protected $routeMiddleware = [
'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
];
但是模型绑定不起作用,我的var dump返回null 。
如果我尝试在控制器中删除模型绑定并使用:
public function delete(Request $request, $id){
var_dump(Task::find($id)->id);
}
有效。 可能是什么问题?
答案 0 :(得分:1)
首先检查:mapApiRoutes
中的routeServiceProvider.php
方法,如果没有->middleware('api')
,请添加到您的方法中。
您应在API路由中添加api
中间件或api
前缀。
答案 1 :(得分:0)
您没有提到有关在任务模型中使用keyName方法的任何事情。
如果您没有,那可能就是问题所在。
将此添加到任务模型以覆盖默认方法:
public function getRouteKeyName()
{
return 'id';
}
编辑:我刚刚测试过,默认为ID。抱歉,我不好。
答案 2 :(得分:0)
您可以尝试将绑定(或api)中间件添加到您的路由中:
Route::group(['prefix'=>'tasks'], function() {
Route::get('delete/{task}', 'TaskController@delete');
})->middleware('bindings');