【发布时间】:2020-03-30 05:02:21
【问题描述】:
我有一个名为 FilmResource 的 API 资源,我已将一个名为 is_new 的新属性附加到模型中,并且我已将此新属性添加到资源文件中,问题是我有两个端点可以使用这个 API 资源的属性,它返回了两者的属性,但我只希望它返回一个方法,有没有一种方法可以指定要在响应中返回的某些键?如果我使用 makeVisible 没有区别,因为它只来自 API 资源。
电影控制器
这是我希望它返回的方法,我有另一个类似的方法,但我不希望它返回。
public function show(string $id)
{
$film = Film::findOrFail($id);
return new FilmResource($film);
}
电影资源
public function toArray($request)
{
return [
'id' => $this->id,
'description' => $this->description,
'name' => $this->name,
'is_new' => $this->is_new
}
API 资源是否会覆盖您在隐藏/可见数组中设置的属性?
当您在控制器中返回某个密钥时,您能否指定要从 API 资源中隐藏它?
【问题讨论】:
-
您可以定义资源上的 api 响应。忘记可见和隐藏。在您的 FilmResource 上删除带有 is_new 的行,它将从您的回复中消失。
-
@EliasSoares 但是如果我希望它为一种方法响应而不是另一种方法响应返回呢?
-
所以这取决于你的逻辑。您可以使用 $request 来识别要返回的内容(例如通过检查方法)或拥有两个不同的资源(扩展最完整的资源并删除不需要的字段,因此您不会重复代码。)
-
您介意为我的案例发布一个示例吗?
-
您控制该类,如果您想定义是否要传递该字段,或者您希望如何传递,请向构造函数添加另一个参数
标签: php laravel append jsonapi-resources