manajet / laravel-extra-resource
此包允许您向您的 Eloquent API 资源和集合添加额外参数。
v0.3.4
2020-05-19 14:59 UTC
Requires
- php: >=7
- illuminate/support: ^5.5|^6.0|^7.0|^8.0
README
![软件许可][ico-license] [![总下载量][ico-downloads]][link-downloads]
关于
此包允许您向您的 Eloquent API 资源和集合添加额外参数。
高度受 gdebrauwer 的问题回答 和 他的 pull-request 的启发。
安装
在您的 composer.json 中需要 manajet/laravel-extra-resource 包并更新您的依赖项
composer require manajet/laravel-extra-resource
创建资源
您可以使用此命令创建新的资源
php artisan make:extraresource MyResource
除了 Laravel 的 make:resource 命令之外,您还可以传递 --collection 选项来创建带有额外参数的新集合
php artisan make:extraresource MyCollection --collection
用法
您可以像以前一样使用您的资源。要传递额外参数,请使用 using 方法。
资源
$user = User::find(1); return (new UserResource($user))->using(['foo' => 'bar']);
并在您的资源类中
<?php namespace App\Http\Resources; use Manajet\ExtraResource\ExtraJsonResource; class UserResource extends ExtraJsonResource { /** * Transform the resource into an array. * * @param \Illuminate\Http\Request $request * @return array */ public function toArray($request) { return [ 'id' => $this->id, 'name' => $this->name, 'email' => $this->email, 'foo' => $this->extra['foo'], ]; } }
集合
集合将尝试使用您的资源类,因此您需要先创建它。
$users = User::all(); return (new UserCollection($users))->using(['foo' => 'bar']);
您还可以使用静态的 collection 方法使用它
$users = User::all(); return UserResource::collection($users)->using(['foo' => 'bar']);
许可
在 MIT 许可下发布,请参阅 LICENSE。