nathanbarrett / laravel-repositories
Laravel应用的仓库服务层
v1.1.0
2024-04-20 22:49 UTC
Requires
- php: ^8.2
- illuminate/contracts: ^10.0||^11.0
- spatie/laravel-package-tools: ^1.16
Requires (Dev)
- larastan/larastan: ^2.9
- laravel/pint: ^1.14
- nunomaduro/collision: ^8.1.1||^7.10.0
- orchestra/testbench: ^9.0.0||^8.22.0
- pestphp/pest: ^2.34
- pestphp/pest-plugin-arch: ^2.7
- pestphp/pest-plugin-laravel: ^2.3
- phpstan/extension-installer: ^1.3
- phpstan/phpstan-deprecation-rules: ^1.1
- phpstan/phpstan-phpunit: ^1.3
This package is not auto-updated.
Last update: 2024-09-22 23:02:02 UTC
README
仓库旨在作为模型和高级目标(如服务)之间的中间层。它们旨在抽象数据层并提供数据访问的干净API。当操作主要或全部关于相关模型时使用仓库。
使用仓库的Laravel应用层
- 服务 - 最高的抽象层。使用仓库和模型执行操作。例如:
StripePaymentService
- 仓库 - 中间的抽象层。使用模型(不仅仅是相关模型)执行操作。例如:
UserRepository
- 模型 - 最低的抽象层。代表数据库中的一个单独表。仅用于关系和轻量级数据转换。例如:
User
安装
您可以通过composer安装此包
composer require nathanbarrett/laravel-repositories
用法
首先创建一个仓库类
use NathanBarrett\LaravelRepositories\Repository; use App\Models\User; /** * @extends Repository<User> */ class UserRepository extends Repository { public function modelClass(): string { return User::class; } }
泛型用于确保您的IDE可以提供代码补全和类型提示。
class UserController extends Controller { public function __construct(private UserRepository $userRepository) { // } public function store(Request $request) { // The IDE will understand that $user is an instance of User $user = $this->userRepository->create($request->all()); return response()->json($user); } }
或者,您可以使用命令快速创建一个
php artisan make:repository UserRepository
测试
composer test
变更日志
请参阅CHANGELOG了解最近更改的更多信息。
贡献
请参阅CONTRIBUTING了解详细信息。
许可证
MIT许可证(MIT)。请参阅许可证文件获取更多信息。