aammui/l9-repository

此包的最新版本(v0.0.5)没有可用的许可证信息。

Laravel 的仓库模式

v0.0.5 2023-08-26 14:48 UTC

README

为 Laravel 的 Eloquent 模型提供基本数据层包装器,具有转换器、过滤器、缓存等功能。

安装

composer require aammui/l9-repository

使用

转换器

首先定义一个 UserTransformer

class UserTransformer extends TransformerAbstract
{
    public function transform(User $user)
    {
        return [
            'id' => $user->id,
            'name' => $user->name
        ];
    }
}

然后使用它,

app()->make(UserRepository::class)
    ->setTransformer(UserTransformer::class)
    ->get();

或者使用自定义包含项,

app()->make(UserRepository::class)
    ->setTransformer(UserTransformer::class, function(\League\Fractal\Manager $manager){
        $manager->parseIncludes('role');
    })
    ->get();

并在 UserTransformer 中将 role 添加到 availableIncludes

protected array $availableIncludes = [
    'role'
];

public function transform(User $user){...}

public function includeRole(User $user): Item
{
    $author = $user->role;

    return $this->item($author, new class extends TransformerAbstract {
        public function transform(Role $role): array
        {
            return [
                'id'    => $role->id,
                'label' => $role->label,
            ];
        }
    });
}

鸣谢

许可证

MIT 许可证(MIT)。有关更多信息,请参阅许可证文件