Php 更改Laravel路线参数

Php 更改Laravel路线参数,php,laravel-5,Php,Laravel 5,在我正在开发的平台中,可以通过向api/company/{id}api端点发送GET请求来请求用户的公司数据 默认情况下,id参数是一个整数,但通常也可以将其设置为字符串:api/company/mine将检索经过身份验证的用户的公司数据 为了实现这一点,我创建了一个中间件,它拦截API调用,并用实际的公司ID替换mine。 不幸的是,我的解决方案并不完全符合我的想法 以下是我当前的解决方案: $request->merge([ 'id' => $request->us

在我正在开发的平台中,可以通过向
api/company/{id}
api端点发送GET请求来请求用户的公司数据

默认情况下,
id
参数是一个整数,但通常也可以将其设置为字符串:
api/company/mine
将检索经过身份验证的用户的公司数据

为了实现这一点,我创建了一个中间件,它拦截API调用,并用实际的公司ID替换
mine
。 不幸的是,我的解决方案并不完全符合我的想法

以下是我当前的解决方案:

$request->merge([
    'id' => $request->user()->company
]);
其工作原理是将id添加到请求的输入中,以便以后可以使用
$request->input('id')访问它,但问题是如果我尝试访问
$request->route('id')
我仍然会得到旧值

是否可以直接更改路线参数

附言


我想到的另一个解决方案是以编程方式使用新参数创建一个新请求,然后将该请求传递给中间件中的
next()
函数。

发现这种情况下的最佳解决方案,至少对我而言,在控制器操作和模型存储库中作为参数传递的请求中处理它

创建新请求的问题在于,它只是部分工作,因为路由参数没有更新,并且不可能在没有大量额外代码的情况下手动更新路由参数


另一个可能的解决方案是将请求重定向到正确的API端点或在控制器中处理它。

遇到了类似的问题,通过在laracasts论坛中进行一些挖掘,有人记下了我成功使用的一个替代方案:

$request->route()->setParameter('id',  $request->user()->company);
参考(最后一篇文章):