咨询 / 分形助手
0.5.0
2021-01-18 21:19 UTC
Requires
- league/fractal: ^0.17|^0.18|^0.19
- pragmarx/ia-str: ^5.8
Requires (Dev)
- dms/phpunit-arraysubset-asserts: ^0.1.0
- mockery/mockery: ^1.2
- phpunit/phpunit: ^8.0
README
这是Fractal的一个小型扩展,用于轻松在资源上包含关系。专为与Laravel/Eloquent一起使用而设计,但它也可以与任何表达相同接口以检索关系的模型或资源一起使用。
安装
composer require konsulting/fractal-helpers
用法
要使用此包,请在您的转换器中扩展 Konsulting\FractalHelpers\TransformerAbstract
而不是基本的Fractal转换器。
在使用Fractal构建API时,我发现自己在Eloquent模型上包含关系时重复了相同的代码
// BookTransformer.php protected $availableIncludes = [ 'author', 'characters' ]; public function includeAuthor(Book $book) { return $this->item($book->author, new AuthorTransformer); } public function includeCharacters(Book $book) { return $this->collection($book->characters, new CharacterTransformer); }
通过包含的 TransformerAbstract
类,您可以更简洁地表达上述代码:
// BookTransformer.php protected $itemIncludes = [ 'author' => AuthorTransformer::class, ]; protected $collectionIncludes = [ 'characters' => CharacterTransformer::class, ];
空关系
如果关系返回 null
,它将自动转换为 League\Fractal\Resource\NullResource
对象,而不是传递给该关系的关联转换器。这意味着在每个转换器中不需要检查null。