And*_*ter 6 laravel eloquent laravel-7
我有自定义的 eloquent api 资源user。例如,当我使用此资源时
代码
$user = $request->user();
return new UserResource($user);
Run Code Online (Sandbox Code Playgroud)
然后在回应我得到:
{
"data": {
"name": "Margarete Daniel",
"email": "goldner.berniece@example.net",
"verified": "2020-03-20T07:15:56.000000Z"
}
}
Run Code Online (Sandbox Code Playgroud)
我如何更改 api 资源并获得示例响应:
{
"name": "Margarete Daniel",
"email": "goldner.berniece@example.net",
"verified": "2020-03-20T07:15:56.000000Z"
}
Run Code Online (Sandbox Code Playgroud)
Mat*_*ias 17
要删除项目内所有资源的数据包装器,只需添加:
use Illuminate\Http\Resources\Json\JsonResource
public function boot()
{
JsonResource::withoutWrapping();
}
Run Code Online (Sandbox Code Playgroud)
boot在你的方法里面AppServiceProvider.php。
Red*_*uki 13
您可以通过withoutWrapping在AppServiceProvider. 在您的情况下,它将是:
public function boot()
{
UserResource::withoutWrapping();
}
Run Code Online (Sandbox Code Playgroud)
你可以参考Laravel 文档中关于数据包装的更多解释。
Ahm*_*oud 10
这对我有用
return UserResource::make($user)->toArray($request);
Run Code Online (Sandbox Code Playgroud)
并用于收藏
return UserResource::collection($users)->collection;
Run Code Online (Sandbox Code Playgroud)
将此添加到您的资源中
public static $wrap = null;
Run Code Online (Sandbox Code Playgroud)
回答,因为我自己一直在同一个问题上磕磕绊绊。
无需data包装就返回 Laravel 资源的最简单方法是简单地在 JSON 响应中返回它。所以,而不是做:
return new UserResource($user);
Run Code Online (Sandbox Code Playgroud)
你会这样做:
return response()->json(new UserResource($user));
Run Code Online (Sandbox Code Playgroud)
通过这种方式,您也不必担心对方法AppServiceProvider进行大量调用withoutWrapping。
| 归档时间: |
|
| 查看次数: |
5141 次 |
| 最近记录: |