我正在寻找某种“拦截”并在模型中的字段发送回客户端之前对其进行更改。我有一个 API,其端点类似于以下内容:
Route::get('users/{user}', 'Api\UserController@user');
我的应用程序使用vinkla/laravel-hashids,因此就客户端应用程序而言,要查询的 ID 应该类似于K6LJwKJ1M8
,而不是1
。目前,我可以查询提供哈希 ID 的用户,但响应返回的是数字/自动递增 ID。
例如,对于诸如/api/users/K6LJwKJ1M8
我收到以下响应的查询:
{
"id": 1,
"address": null,
"telephone": null,
"name": "TestNameHere",
"description": null,
...
}
Laravel 中是否有一种很好的方法可以修改所有在响应中返回的用户对象以使用 vinkla/laravel-hashids ID,而不是自动递增 ID?
理想情况下,上述响应将变为:
{
"id": K6LJwKJ1M8,
"address": null,
"telephone": null,
"name": "TestNameHere",
"description": null,
...
}
我在想类似 using 的东西getRouteKey
会起作用,但它不会改变在 JSON 响应中发送的对象。
例如
public function getRouteKey() {
return Hashids::encode($this->attributes['id']);
}
如果有一个地方可以更改它会很好,因为我的应用程序有大约 40 条不同的路由,否则我需要“手动”更改(例如,在发送响应之前执行类似的操作$user->id = Hashids::encode($id)
)