Laravel eloquent api 资源删除 `data` 键(无集合)
Laravel eloquent api resource remove `data` key (no collection)
我有 user
的自定义 eloquent api 资源。例如当我使用这个资源
代码
$user = $request->user();
return new UserResource($user);
然后我收到回复:
{
"data": {
"name": "Margarete Daniel",
"email": "goldner.berniece@example.net",
"verified": "2020-03-20T07:15:56.000000Z"
}
}
我如何更改 api 资源并获得示例响应:
{
"name": "Margarete Daniel",
"email": "goldner.berniece@example.net",
"verified": "2020-03-20T07:15:56.000000Z"
}
您可以通过在 AppServiceProvider
中调用资源的 withoutWrapping
静态方法来禁用数据换行。在你的情况下它将是:
public function boot()
{
UserResource::withoutWrapping();
}
回答我自己也一直在遇到同样的问题。
在没有 data
包装的情况下 return Laravel 资源的最简单方法是在 JSON 响应中简单地 return 它。所以不要这样做:
return new UserResource($user);
你会做:
return response()->json(new UserResource($user));
这样,您也不必担心因多次调用 withoutWrapping
方法而导致 AppServiceProvider
塞满。
要删除项目中 所有 资源的数据包装器,只需添加:
use Illuminate\Http\Resources\Json\JsonResource
public function boot()
{
JsonResource::withoutWrapping();
}
在 AppServiceProvider.php
的 boot
方法中。
将此添加到您的资源
public static $wrap = null;
这对我有用
return UserResource::make($user)->toArray($request);
和 collection
return UserResource::collection($users)->collection;
出于某种原因,这有效:
$user = User::find(1);
return UserResource::make($user)->resolve();
没有 ->resolve()
就不行。
我有 user
的自定义 eloquent api 资源。例如当我使用这个资源
代码
$user = $request->user();
return new UserResource($user);
然后我收到回复:
{
"data": {
"name": "Margarete Daniel",
"email": "goldner.berniece@example.net",
"verified": "2020-03-20T07:15:56.000000Z"
}
}
我如何更改 api 资源并获得示例响应:
{
"name": "Margarete Daniel",
"email": "goldner.berniece@example.net",
"verified": "2020-03-20T07:15:56.000000Z"
}
您可以通过在 AppServiceProvider
中调用资源的 withoutWrapping
静态方法来禁用数据换行。在你的情况下它将是:
public function boot()
{
UserResource::withoutWrapping();
}
回答我自己也一直在遇到同样的问题。
在没有 data
包装的情况下 return Laravel 资源的最简单方法是在 JSON 响应中简单地 return 它。所以不要这样做:
return new UserResource($user);
你会做:
return response()->json(new UserResource($user));
这样,您也不必担心因多次调用 withoutWrapping
方法而导致 AppServiceProvider
塞满。
要删除项目中 所有 资源的数据包装器,只需添加:
use Illuminate\Http\Resources\Json\JsonResource
public function boot()
{
JsonResource::withoutWrapping();
}
在 AppServiceProvider.php
的 boot
方法中。
将此添加到您的资源
public static $wrap = null;
这对我有用
return UserResource::make($user)->toArray($request);
和 collection
return UserResource::collection($users)->collection;
出于某种原因,这有效:
$user = User::find(1);
return UserResource::make($user)->resolve();
没有 ->resolve()
就不行。