hpolthof/repository

该包的最新版本(1.0.0)没有可用的许可信息。

Laravel 5 的简单仓库模式实现

1.0.0 2019-08-13 19:57 UTC

This package is auto-updated.

Last update: 2024-09-14 06:59:50 UTC


README

这是一个用于与 Eloquent 一起使用的仓库模式的简单实现。

如何使用?

使用 composer 在您的项目中安装此包。

composer require hpolthof/repository

生成器命令

现在您可以使用新的生成器命令创建仓库

php artisan make:repository {modelName}

这将创建一个位于 app 目录中的 Repositories 目录下的新仓库。

模型生成器

此包还将扩展 make:model 生成器。当使用参数 --all-a--repository-o 调用此生成器时,也将生成仓库。

仓库

仓库是一个空的类,它扩展了 Hpolthof\Laravel\Repository\Repository,该类实现了 Hpolthof\Laravel\Repository\Contracts\RepositoryInterface 接口。此接口如下所示

interface RepositoryInterface
{
    public function all(array $columns = ['*']): Collection;
    public function list(string $orderByColumn, string $orderBy = 'desc', array $with = [], array $columns = ['*']): Collection;
    public function builder(Closure $builder, array $columns = ['*']): Collection;

    public function create(array $data): ?Model;
    public function update(array $data, $id): bool;
    public function delete($id): bool;

    public function find($id, array $columns = ['*']): ?Model;
    public function findBy(string $field, $value, array $columns = ['*']): ?Model;
}

自动模型检测

仓库将尝试检测应该使用的相关 Eloquent 模型。如果模型名称为 {ModelName}Repository,则将自动使用该模型。

手动设置模型

如果无法检测到模型或您想使用其他名称,则应设置 $modelName 属性。这可以通过以下示例完成

use App\Demo;

class DemoRepository extends Repository {
    protected $modelName = Demo::class;
}

在控制器中使用

在控制器中,您可以使用依赖注入来实例化仓库。请参见以下示例

class DemoController extends Controller {
    protected $repository;
    
    public function __construct(DemoRepository $repository)
    {
        $this->repository = $repository;
    }
}

免责声明

此包用于内部开发,但公开发布。显然,此软件为“原样”提供,且没有任何保证或声明。

如果您喜欢此包,如果您能留下感谢的信息,那将总是受到欢迎!;-)

此包由 Paul Olthof 构建