一种将 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,因此出现了评论。有没有更易读的替代方案?
加载 guests
与 lazy eager loading 的关系:
public function show(Invite $invite)
{
return response($invite->load('guests')->jsonSerialize(), Response::HTTP_CREATED);
}
在资源控制器中,我有以下显示功能。
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,因此出现了评论。有没有更易读的替代方案?
加载 guests
与 lazy eager loading 的关系:
public function show(Invite $invite)
{
return response($invite->load('guests')->jsonSerialize(), Response::HTTP_CREATED);
}