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