asp-devteam/repository

此包已被废弃,不再维护。作者建议使用 asp-devteam/laravel-repository 包。

用于在laravel中轻松开发模型CRUD的库。


README

Software License Total Downloads

这是一个用于在laravel中轻松开发模型CRUD的库。
它提供了一些特性和类,允许您创建处理自动分页和以标准格式创建JSON响应的控制器。此外,它提供了一系列特性和类,以实现所谓的模型驱动存储库,这使得模型可以作为数据存储库来处理过滤、分页、CRUD操作,并提供了一种简单的方法来创建您自己的自定义操作和验证。

要求

此包需要

  • PHP 7.2+
  • Laravel 7+ 或 Lumen 7+

安装

Laravel的兼容性如下

Laravellaravel-repository
5.7^0.1
5.8^0.1
6.x^6.0
7.x^7.0

要将依赖项添加到Laravel 7.x项目,请运行

composer require asp-devteam/laravel-repository "^7.0"

Laravel

注册服务提供商

将以下行追加到 config/app.php 中的 providers 键以注册包

ASP\Repository\RepositoryServiceProvider::class,

该包支持自动发现,因此如果您使用Laravel 5.5或更高版本,您可能可以跳过注册服务提供商和外观,因为它们将自动注册。

发布资源

要将可用的翻译和配置发布到您的应用程序中,以便进行自定义,只需运行

php artisan vendor:publish --tag=repository.translations
php artisan vendor:publish --tag=repository.config

用法

简要介绍此包的用法。

本文档假设您对Fractal的工作原理有一些了解。

扩展 ASP\Repository\Base\Controller

该包有一个 Controller 类,它实现了一个中间件,用于处理索引的分页

use ASP\Repository\Base\Controller;

class YourController extends Controller
{
}

使用模型存储库

选项 1:使用提供的存储库

要使用存储库,您可以在模型类中使用它

use ASP\Repository\Traits\Repository;

class YourModel extends Model
{
    use Repository;
}

这将使以下方法对您可用

  • getAllRecords(Filter $filters = null, array $pagination = null)
  • getRecordById($id)
  • createRecord(Request $request)
  • updateRecordById($id, Request $request)
  • deleteRecordById($id, Request $request)
选项 2:创建自己的存储库

您还可以扩展存储库并添加自己的方法,这还允许您使用模型验证器

use ASP\Repository\Traits\Repository;
...
trait YourRepository
{
    use Repository;


}
use ASP\Repository\Traits\Repository;

class YourModel extends Model
{
    use YourRepository, YourModelValidator;
}

使用验证器

use ASP\Repository\Traits\Validator;

trait YourModelValidator
{
    use Validator;

    /**
     * @return void
     */
    protected static function boot()
    {
        parent::boot();

        self::setBaseRules(
            [
                'name' => [
                    'laravel rules here'
                ],
            ]
        );
    }

    /**
     * @return array
     */
    protected static function getCustomRules()
    {
        $rules = self::getBaseRules();

        return array_merge(
            $rules,
            [
              'new rules'
            ]
        );
    }
}

使用过滤器

有关详细信息,请参阅 ASP\Repository\Base\Filter

use ASP\Repository\Base\Filter;

class PetFilters extends Filter
{
  public function <filterName>(<$parameters>)

贡献

有关详细信息,请参阅 CONTRIBUTING

安全

如果您发现任何与安全相关的问题,请通过电子邮件 asp-devteam@alter-solutions.com 联系,而不是使用问题跟踪器。

许可

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

版权 2020 Alter Solutions Portugal