我正在编写一个REST API,我正在使用多态关系将图像分配给users
和products
(将来会有更多,我打算让代码长寿,所以我想构建一些适用于任何其他imageable
模型的东西。
所以我有这样的路线:
Route::resource('images', 'ImagesController');
Route::resource('products.images', 'ImagesController');
Route::resource('users.images', 'ImagesController');
因此,发布到/products/{id}/images
和/users/{id}/images
会调用相同的操作:ImagesController::store( $resource_id )
。所以除了父模型名称外,我还有创建数据库记录的所有内容!
我的第一个猜测是使用Route::current()->getName()
并使用第一个“/”之前的字符串部分来获取模型名称。但是,有更好的,开箱即用的方式吗?或者我正在追寻正确的轨道?
答案 0 :(得分:4)
只需使用Laravel request segment功能
即可$parent_resource = Request::segment(1);
// gives 'products' or 'users'
答案 1 :(得分:1)
这是我最终如何做到这一点。感谢Request::segment(1)
部分的The Shift Exchange!
$parent_resource_class = studly_case( str_singular ( Request::segment(1) ) );