oscabrera / model-repository
一个Laravel扩展包,通过自定义Artisan命令简化基于仓库结构的创建。
Requires
- php: ^8.1
- laravel/framework: ^9.0|^10.0|^11.0
- oscabrera/laravel-json-api-format-paginate: ^1.0
- oscabrera/laravel-query-filters: ^1.0
- spatie/laravel-route-attributes: ^1.21
Requires (Dev)
- phpstan/phpstan: ^1.11
This package is auto-updated.
Last update: 2024-09-09 13:01:24 UTC
README
请遵循以下文档:model-repository。
此包为Laravel大大简化了创建任何模型的完整RESTful API的过程。只需运行一个命令,您就可以生成创建、读取、更新和删除模型实例所需的所有文件。该项目基于仓库模式,将数据访问逻辑与业务逻辑分离,从而生成更干净、更模块化、更容易维护的代码。此外,它集成了管理业务逻辑并用于在仓库上执行操作的服务,从而为代码提供额外的抽象和组织层。
主要功能
- 自动文件生成:当您运行
php artisan make:repository命令时,将自动生成以下文件- 模型(
Model):定义数据库表结构的Eloquent模型。 - 管理模型的仓库(
Repository):实现了仓库模式以封装数据库访问逻辑。
- 模型(
- 可选自动文件生成
- 仓库服务(
Service):实现模型的业务逻辑。 - 服务控制器(
Controller):定义API路由并使用服务进行API逻辑。 - 验证请求(
Request):验证控制器路由的输入数据。 - 播种器(
Seeder):为测试目的向数据库填充示例数据。 - 工厂(
Factory):生成用于测试的假数据。
- 仓库服务(
- 预定义的CRUD方法:生成的
Repository、Service和Controller实现了RESTful API的标准方法create:创建模型的新实例read:读取模型的特定实例update:更新模型的现有实例delete:删除模型的实例list:列出模型的全部实例
- 使用Laravel路由属性定义路由:使用
spatie/laravel-route-attributes在控制器中清晰地简洁地定义路由。例如
#[Get(uri: 'models/{id}', name: 'models.read')] public function read(string $id): JsonResponse { return response()->json($this->service->read($id)); }
优点
-
快速高效:通过自动生成实现RESTful API所需的所有文件,避免重复任务。
-
干净整洁的代码:通过遵循仓库模式并将数据访问逻辑与业务逻辑分离,促进了代码的一致性和可维护性。
-
即时可用的功能API:运行命令并执行必要的迁移后,您的API将立即可用。
-
灵活性和可定制性:虽然生成了默认文件,但可以根据项目的具体需求进行修改。
使用方法
- 使用Composer安装包
composer require oscabrera/model-repository
- 运行命令以生成API
php artisan make:repository DummyModel --seed --migration --service --controller --request --factory
或者,您可以使用--all选项一次性生成所有可用组件
php artisan make:repository DummyModel --all
- 根据您的需求自定义生成的代码。
在模型中
在模型中重要使用属性$fillable和$hidden。
在$hidden中,您必须将id添加到您的模型中。
protected $hidden = [ 'id', ];
在 $fillable 中,你应该添加所有你希望模型返回的属性。
- 迁移数据库
php artisan migrate
- 准备好了!现在你可以访问模型的全功能RESTful API了。
文件位置
由 make:repository 命令生成的文件位于名为给定模型的文件夹内。
├── app
│ ├── Contracts
│ │ ├── Repositories
│ │ │ └── Name
│ │ │ └── INameRepository.php
│ │ └── Services
│ │ └── Name
│ │ └── INameService.php
│ ├── Http
│ │ ├── Controllers
│ │ │ └── Name
│ │ │ └── NameController.php
│ │ └── Requests
│ │ └── Name
│ │ └── NameRequest.php
│ ├── Models
│ │ └── Name
│ │ └── Name.php
│ ├── Repositories
│ │ └── Name
│ │ └── NameRepository.php
│ └── Services
│ └── Name
│ └── NameService.php
├── database
│ ├── migrations
│ │ └── 2024_03_17_022718_create_names_table.php
│ ├── Seeders
│ │ └── NameSeeder.php
│ └── Factories
│ └── DummyModel
│ └── DummyModelFactory.php
按文件夹组织的好处
组织:保持代码井然有序,易于查找。
模块化:允许API每个组件的逻辑分离。
维护:便于代码的维护和更新。
结论
这个Laravel包允许你快速、轻松地创建完整的RESTful API,得益于Spatie Ignition,提供了更好的开发体验。
描述
本项目使用Laravel框架实现了一个完整模型仓库的实现。目标是便于为Laravel模型开发完整的RESTful API,具有CRUD(创建、读取、更新、删除)功能以及筛选和排序选项。
技术
- Laravel
- VitePress
- PHP
特性
- 自动为模型生成完整的RESTful API。
- 支持CRUD(创建、读取、更新、删除)。
- 筛选和排序选项。
- 输入数据验证。
- 完整的VitePress文档。
使用
- 文档被组织成章节和部分。
- 您可以使用侧边菜单或搜索栏浏览文档。
- 每个部分包含特定VitePress主题的详细信息。
- 教程将指导您完成执行常见任务所需的步骤。
- API参考提供了VitePress所有功能和选项的完整信息。
贡献
- 欢迎对此项目的贡献。
- 如果您发现任何错误或有任何建议,请随时在GitHub上创建问题。
关键词
Laravel, RESTful API, 仓库模式, CRUD, API, 仓库,服务,文件生成