Laravel API - 处理具有许多关联的 API "entity"

Laravel API - Dealing with an API "entity" with many associations

所以我正在构建一个 API,它有一个 "Member" 模型。我正在围绕一个预先存在的数据库构建此 API,而此 "Member" 仅在其基本查询中就有近 16 个关系。我现在应该构建我的 api 来响应 member/{id}/pension 和 return 之类的所有 PENSION 信息。这是一组全新的关联以及我已经创建的一些关联。我的问题是,开始在 MembersController 中创建额外的 Controller 方法(如 showPension / showPensionSummary)是一种不好的做法,还是我应该将它们移到另一个控制器....或者是否有一个我缺少的选项 c。

是的,将所有内容都放在一个控制器中是不好的做法。然后,您不应用单一责任协议 (SRP)。但如果我没记错的话,你有一个 Member 模型。会员有养老金关系,所以你有Pension模式?

Member 模型中,您可以添加如下方法:

public function pension() {
   return $this->hasOne('App\Model\Pension');
}

如果您有更多来自成员的带有 {id} 的路由,您可以使用路由模型绑定。将 id 参数更改为 {member}。然后在AppServiceProvider里面添加如下代码:

$router->bind('member', 'App\Models\Member');

在您的 Controller 文件夹中创建一个名为 Member 的文件夹。在那里添加一个 MemberController 和一个 PensionController。在 PensionController 中添加方法:showPension 或仅显示(因为您已经在控制器中)。这样更干净。

public function show(\Illuminate\Http\Request $request) {
    echo json_encode($request->member->pension);
}