从Laravel 4.x的嵌套资源控制器中删除不必要的参数


Remove unnecessary parameter from nested resource controller in Laravel 4.x

我正在通过Laravel使用通过routes.php文件链接的资源控制器开发API。请看下面的例子:

// API routes
Route::group(array('prefix' => 'v1'), function() {
    Route::resource('users', 'UserController');
    Route::resource('users.profile', 'UserProfileController');
    Route::resource('users.tasks', 'UserTaskController');
});
一般来说,Laravel在处理这些路由方面做得很好。但有一个例外让我很纠结。通过查看user_profiles表中的外键user_id,我的数据库模型被设计成在users表和user_profiles表之间具有一对一的关系。这意味着它作用于一个标识关系,所以它没有自己的主键,它实际上借用了users表的键。

现在,我想通过输入以下(示例)URL时调用的UserProfileController来更新UserProfile模型:http://api.projectX.dev:8000/v1/users/{id of the user}/profile。但是Laravel强迫我有一个这样的URL: http://api.projectX.dev:8000/v1/users/{id of the user}/profile/{some other useless ID} .

有没有办法神奇地从资源路由中删除最后一个ID,只是利用第一个ID?

我希望有人能帮我解决这个问题,因为要找到这个问题的答案实际上很难。

您正在创建一个嵌套的资源控制器(向下滚动一点)。本质上说一个资源控制器属于另一个资源控制器。您可以使用php artisan routes查看正在生成的路由。

听起来你需要结合使用资源控制器和明确定义的路由来获得你想要的确切设置。我不太了解你想如何控制更新/删除配置文件,否则我会提供比这更实质性的东西。