咨询/分形助手

0.5.0 2021-01-18 21:19 UTC

This package is auto-updated.

Last update: 2024-08-29 05:06:48 UTC


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。