一种将 hasMany 集合拉入控制器中结果对象的可读方式

A readable way to pull in a hasMany collection into a result object in the controller

在资源控制器中,我有以下显示功能。

public function show(Invite $invite)
{
    return response($invite->jsonSerialize(), Response::HTTP_CREATED);
}

邀请模型有很多嘉宾,嘉宾模型属于一个邀请。标准资源路由。当我查询 url 时,我得到如下响应:

{
    id":17,
    "user_id":2,
    "event_id":1,
    "name":"Fred Neumann +1",
    "called":0,
    "emailed":0,
    "invited":1,
    "max_guests":2,
    "created_at":"2019-05-18 21:31:07",
    "updated_at":"2019-05-18 21:31:07",
    "deleted_at":null
}

现在我还想 return 来宾和邀请信息。我可以通过这样修改显示函数来实现:

public function show(Invite $invite)
{
    // Don't remove this line:
    $invite->guests = $invite->guests;

    return response($invite->jsonSerialize(), Response::HTTP_CREATED);
}

这工作正常,但它实际上做了什么并不明显。我很容易看到自己后来不小心将其删除并破坏了 API,因此出现了评论。有没有更易读的替代方案?

加载 guestslazy eager loading 的关系:

public function show(Invite $invite)
{
    return response($invite->load('guests')->jsonSerialize(), Response::HTTP_CREATED);
}