asp-devteam / laravel-repository
为了在 Laravel 中轻松开发模型 CRUD 而创建的库。
Requires
- php: ^7.2.5
- flugger/laravel-responder: ^3.1
- illuminate/support: ~7
Requires (Dev)
- fzaninotto/faker: ^1.4
- mockery/mockery: ^1.3.1
- nunomaduro/collision: ^4.1
- nunomaduro/phpinsights: ^1.14
- phpunit/phpunit: ^9.0
- v7.x-dev
- v7.2.13
- v7.2.12
- v7.2.11
- v7.2.10
- v7.2.9
- v7.2.8
- v7.2.7
- v7.2.6
- v7.2.5
- v7.2.4
- v7.2.3
- v7.2.2
- v7.2.1
- v7.2.0
- v7.1.0
- v7.0.2
- v7.0.1
- v7.0.0
- v6.x-dev
- v6.4.0
- v6.3.13
- v6.3.12
- v6.3.11
- v6.3.10
- v6.3.9
- v6.3.8
- v6.3.7
- v6.3.6
- v6.3.5
- v6.3.4
- v6.3.3
- v6.3.2
- v6.3.1
- v6.3.0
- v6.2.2
- v6.2.1
- v6.2.0
- v6.1.12
- v6.1.11
- v6.1.10
- v6.1.9
- v6.1.8
- v6.1.7
- v6.1.6
- v6.1.5
- v6.1.4
- v6.1.3
- v6.1.2
- v6.1.1
- v6.1.0
- v6.0.1
- v6.0.0
- v0.x-dev
- v0.1.31
- v0.1.30
- v0.1.29
- v0.1.28
- v0.1.27
- v0.1.26
- v0.1.25
- v0.1.24
- v0.1.23
- v0.1.22
- v0.1.21
- v0.1.20
- v0.1.19
- v0.1.18
- v0.1.17
- v0.1.16
- v0.1.15
- v0.1.14
- v0.1.13
- v0.1.12
- v0.1.11
- v0.1.10
- v0.1.9
- v0.1.8
- v0.1.7
- v0.1.6
- v0.1.5
- v0.1.4
- v0.1.3
- v0.1.2
- v0.1.1
- v0.1.0
- dev-master
This package is auto-updated.
Last update: 2024-09-11 18:41:51 UTC
README
这是一个创建库,旨在为 Laravel 中模型的 CRUD 提供简便方式。
它提供了一些特性和类,允许您创建自动处理分页并按标准格式创建 JSON 响应的控制器。它还提供了一组特性来实现所谓的模型驱动存储库,这允许模型作为数据存储库,可以处理筛选、分页、CRUD 操作,并提供创建自定义操作和验证的简便方式。
需求
此包需要
- PHP 7.2+
- Laravel 7+ 或 Lumen 7+
安装
与 Laravel 的兼容性如下
Laravel | laravel-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