Php 从Laravel 4.x中的嵌套资源控制器中删除不必要的参数
我正在通过Laravel使用资源控制器开发一个API,这些资源控制器通过Php 从Laravel 4.x中的嵌套资源控制器中删除不必要的参数,php,laravel,laravel-4,laravel-routing,nested-routes,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
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在处理这些路线方面做得很好。但有一个例外,我有我的斗争。我的数据库模型旨在通过查看user\u profiles
表中的外键user\u id
,在users
表和user\u profiles
表之间建立一对一的关系。这意味着它作用于标识关系,因此它没有自己的主键,它实际上借用了users
表的键
现在,我想通过输入以下(示例)URL时调用的UserProfileController
更新UserProfile
模型:http://api.projectX.dev:8000/v1/users/{用户id}/profile
。但是Laravel强迫我有这样一个URL:http://api.projectX.dev:8000/v1/users/{user id}/profile/{其他一些无用的id}
是否有任何方法可以神奇地从资源路由中删除最后一个ID,并利用第一个ID
我希望有人能帮我解决这个问题,因为现在很难找到这个问题的答案。您正在创建一个(向下滚动一点)。本质上说,一个资源控制器属于另一个资源控制器。您可以使用php artisan routes
查看生成的确切路由
听起来您需要结合使用资源控制器和显式定义的路由来获得所需的确切设置。关于如何控制更新/删除配置文件,我知道的还不够多,否则我会提供更多的内容。我已经运行了
php artisan routes
命令,并获得了以下输出(请参见链接):输出显示我需要调用以下URL来更新用户配置文件:PUT v1/users/{users}/profile/{profile}
。但实际上我不需要{profile}变量,因为user\u profiles
表没有自己的主键,只使用一个名为user\u id
的外键,它指向users
表。有没有办法删除该{profile}参数,而无需为其创建自定义路由?否。资源控制器路由将自动为您创建所有这些路由。最好是手动为配置文件端点创建路由。谢谢!我将使用您的方法解决此问题。