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

时间:2014-08-04 20:56:33

标签: php laravel laravel-4 laravel-routing nested-routes

我正在使用资源控制器通过Laravel开发API,这些资源控制器通过routes.php文件链接。请参阅以下示例:

// API routes
Route::group(array('prefix' => 'v1'), function() {

    Route::resource('users', 'UserController');
    Route::resource('users.profile', 'UserProfileController');
    Route::resource('users.tasks', 'UserTaskController');

});

一般来说,Laravel在处理这些路线方面做得很好。但是我有一个例外,我在哪里挣扎。我的数据库模型旨在通过查看users表中的外键user_profilesuser_id表和user_profiles表之间建立一对一的关系。这意味着它正在执行标识关系,因此它没有自己的主键,它实际上借用了users表的键。

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

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

我希望有人可以帮助我,因为现在很难找到这个问题的答案。

1 个答案:

答案 0 :(得分:1)

您正在创建nested resource controller (向下滚动一下)。基本上说一个资源控制器属于另一个资源控制器。您可以使用php artisan routes查看确切生成的路由。

听起来您需要使用资源控制器和明确定义的路由的组合来获得您之后的确切设置。我不太了解您希望如何控制更新/删除个人资料,或者我提供的内容比这更重要。