gpt4 book ai didi

laravel - Laravel Resource 中的附加数据

转载 作者:行者123 更新时间:2023-12-05 05:07:06 25 4
gpt4 key购买 nike

我使用来自 Controller 的 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

];
}

最佳答案

在您的 Controller 中,不要将 return Resource 包装在 response()->json 中。只需返回 ProjectResource。

就像:

$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 之前将其添加到项目集合。

关于laravel - Laravel Resource 中的附加数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59438633/

25 4 0
文章推荐: javascript - 使用 js-cookie 和 JSON.parse 从 cookie 中设置和获取数组
文章推荐: laravel - 时间戳使我的 phpunit 测试失败
文章推荐: reactjs - 变体 ="filled"不适用于