mohammadmehrabani / repository-generator
从现有的模型文件快速生成仓库和接口
Requires
- illuminate/console: ~5.0|~6.0|~7.0|^8.0
- illuminate/support: ~5.0|~6.0|~7.0|^8.0
This package is auto-updated.
Last update: 2024-09-29 06:02:57 UTC
README
关于
Repository Generator 是一个 Laravel 扩展包,旨在自动生成仓库和接口文件,并将接口绑定到实现,从而实现仓库模式的自动化。通过自动化操作,它可以提高您的开发速度。您可以使用此包处理现有项目和新项目。
- 通过简单的配置进行高度定制
- 覆盖选项
- 易于改进
安装
您可以通过 Composer 安装此包
composer require mohammadmehrabani/repository-generator:dev-master
接下来,您必须将服务提供者安装到 config/app.php
'providers' => [ // for laravel 5.4 and below MohammadMehrabani\RepositoryGenerator\RepositoryGeneratorServiceProvider::class, ];
然后,如果您想自定义文件夹名称、命名空间等,您需要使用以下命令发布配置:
php artisan vendor:publish --provider="MohammadMehrabani\RepositoryGenerator\RepositoryGeneratorServiceProvider" --tag="config"
现在您可以编辑 config/repository-generator.php
使用方法
在您使用 generate
命令之前,您应该根据您的需要自定义 config/repository-generator.php
。您可以通过终端简单地使用 repository:generate
命令。
php artisan repository:generate
接下来,您必须将服务提供者安装到 config/app.php
'providers' => [ // You can change service_provider_class from config/repository-generator.php App\Providers\RepositoryServiceProvider::class, ],
由 RepositoryGenerator 提供的仓库文件(可选使用)
此包包含 Repository.php,它具有与 Eloquent 类似的函数。当您从 \MohammadMehrabani\RepositoryGenerator\Repository
扩展类时,您可以基本做以下事情:
这是完全个人和可选的。我只是创建/复制了一些来自 Eloquent 的函数,以直接将类似的功能添加到仓库文件中。这样,如果我为其他数据库源(如 mongodb)扩展或实现此仓库/接口,我可以在控制器中使用相同的方法。
<?php // You can change Directories and Namespaces from config/repository-generator.php use App\Repositories\Interfaces\UserRepositoryInterface; $repository = resolve(UserRepositoryInterface::class); $user = $repository->select('id', 'name') ->where('name', 'LIKE', '%Mohammad%') ->first(); // or ->get();
内置的 active() 范围
<?php use App\Repositories\Interfaces\UserRepositoryInterface; $repository = resolve(UserRepositoryInterface::class); $users = $repository->active() ->get(); // You can change active column name from config/repository-generator.php
可用方法
所有列出的方法的使用与 Eloquent 相同
贡献
感谢您考虑为 Repository Generator 做出贡献!贡献指南可以在 CONTRIBUTING.md 中找到。