ozanakman/laravel-repository-generator

此包已被废弃,不再维护。未建议替代包。

快速从现有模型文件生成仓库和接口

v0.02 2017-05-08 21:19 UTC

This package is auto-updated.

Last update: 2022-02-01 13:07:04 UTC


README

Packagist StyleCI Build Status Scrutinizer Code Quality

关于

Repository Generator 是一个 Laravel 包,旨在为仓库模式生成仓库和接口文件。它通过自动化操作提高开发速度。您可以使用此包用于正在进行的和新的项目。

  • 通过简单的配置高度可定制
  • 覆盖选项
  • 易于改进

安装

您可以通过 Composer 安装此包

composer require ozanakman/laravel-repository-generator

接下来,您必须将服务提供者安装到 config/app.php

'providers' => [
    // ...
    OzanAkman\RepositoryGenerator\RepositoryGeneratorServiceProvider::class,,
];

然后,如果您想自定义文件夹名称、命名空间等,您需要使用命令发布配置

php artisan vendor:publish --provider="OzanAkman\RepositoryGenerator\RepositoryGeneratorServiceProvider" --tag="config"

现在您可以编辑 config/repository-generator.php

用法

在使用 generate 命令之前,您应该为您的个人使用自定义 config/repository-generator.php。您可以通过终端简单使用 repositories:generate 命令。

php artisan repositories:generate

RepositoryGenerator 提供的仓库文件(可选使用)

此包包含 Repository.php,它具有与 Eloquent 相似的功能。当您从 \OzanAkman\RepositoryGenerator\Repository 扩展类时,您基本上可以执行以下操作:

这是完全个人化和可选的。我只是从 Eloquent 复制了一些函数,以便直接将类似功能添加到仓库文件中。因此,如果我为其他数据库源(如 mongodb)扩展或实现此仓库/接口,我可以在控制器中使用相同的方法。

<?php

$magic = $repository->select('id', 'name')
            ->where('name', 'The Flash')
            ->get(); // or ->first();

内置 active() 范围

<?php

$magic = $repository->active()
            ->get();
            
// You can change active column name from config/repository-generator.php

可用方法
所有列出的方法都具有与 Eloquent 相同的用法

方法 用法
select $repo->select('column1,'column2')
$repo->select(['column1, 'column2'])
active $repo->active()->get();
active() 等于 $repo->where('active_column', 1);
where $repo->where('color', 'red')->first();
$repo->where('level', '>', 10)->first();
whereIn $repo->whereIn('role', ['moderator', 'admin'])->get();
orWhere $repo->orWhere('column', 'value')->first();
with $repo->with('relation')->get();
count $repo->where('type', 'follower')->count();
find $repo->find($id);
value $repo->where('id', $id)->value('name');
get $repo->get();
paginate $repo->paginate(20);
create $repo->create(['name' => 'Ozan', 'role' => 'admin']);
update $repo->update(['role' => 'moderator'], $id);
delete $repo->where('posts', 0)->delete();
$repo->delete($id);
destroy $repo->destroy($id);

贡献

感谢您考虑为 Repository Generator 贡献!贡献指南可以在 CONTRIBUTING.md 中找到。