我使用控制器中的 Laravel 资源:
$data = Project::limit(100)->get();
return response()->json(ProjectResource::collection($data));
我喜欢将附加信息传递给 ProjectResource。怎么可能?我如何访问附加数据?
我尝试这样:
$data = Project::limit(100)->get();
return response()->json(ProjectResource::collection($data)->additional(['some_id => 1']);
但这不起作用。
正确的方法是什么?
我喜欢访问some_id
在这样的资源中。
public function toArray($request)
{
return [
'user_id' => $this->id,
'full_name' => $this->full_name,
'project_id' => $this->additional->some_id
];
}
在您的控制器中,不要将返回资源包装在response()->json中。
只需返回 ProjectResource 即可。
So like:
$data = Project::limit(100)->get();
return ProjectResource::collection($data)->additional(['some_id => 1']);
抱歉误解了这个问题。
我认为没有办法像这样传递额外的数据。因此,您必须遍历集合并以某种方式添加它。
一种选择是添加到 AnonymousCollection 中的资源。例如:
$projectResource = ProjectResource::collection($data);
$projectResource->map(function($i) { $i->some_id = 1; });
return $projectResource;
然后在 ProjectResource 中:
return [
'user_id' => $this->id,
'full_name' => $this->full_name,
'project_id' => $this->when( property_exists($this,'some_id'), function() { return $this->some_id; } ),
];
或者将 some_id 添加到项目集合中,然后将其传递给 ResourceCollection。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)