oscabrera/model-repository

一个Laravel扩展包,通过自定义Artisan命令简化基于仓库结构的创建。

v2.0.5 2024-06-24 13:28 UTC

This package is auto-updated.

Last update: 2024-09-09 13:01:24 UTC


README

Latest Version on Packagist Total Downloads

VitePress PHPStan Pint PHPMD

built with Codeium

model-repository

请遵循以下文档:model-repository

此包为Laravel大大简化了创建任何模型的完整RESTful API的过程。只需运行一个命令,您就可以生成创建、读取、更新和删除模型实例所需的所有文件。该项目基于仓库模式,将数据访问逻辑与业务逻辑分离,从而生成更干净、更模块化、更容易维护的代码。此外,它集成了管理业务逻辑并用于在仓库上执行操作的服务,从而为代码提供额外的抽象和组织层。

主要功能

  • 自动文件生成:当您运行php artisan make:repository命令时,将自动生成以下文件
    • 模型(Model):定义数据库表结构的Eloquent模型。
    • 管理模型的仓库(Repository):实现了仓库模式以封装数据库访问逻辑。
  • 可选自动文件生成
    • 仓库服务(Service):实现模型的业务逻辑。
    • 服务控制器(Controller):定义API路由并使用服务进行API逻辑。
    • 验证请求(Request):验证控制器路由的输入数据。
    • 播种器(Seeder):为测试目的向数据库填充示例数据。
    • 工厂(Factory):生成用于测试的假数据。
  • 预定义的CRUD方法:生成的RepositoryServiceController实现了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将立即可用。

  • 灵活性和可定制性:虽然生成了默认文件,但可以根据项目的具体需求进行修改。

使用方法

  1. 使用Composer安装包
composer require oscabrera/model-repository
  1. 运行命令以生成API
php artisan make:repository DummyModel --seed --migration --service --controller --request --factory 

或者,您可以使用--all选项一次性生成所有可用组件

php artisan make:repository DummyModel --all
  1. 根据您的需求自定义生成的代码。

在模型中

在模型中重要使用属性$fillable$hidden

$hidden中,您必须将id添加到您的模型中。

protected $hidden = [
        'id',
    ];

$fillable 中,你应该添加所有你希望模型返回的属性。

  1. 迁移数据库
php artisan migrate
  1. 准备好了!现在你可以访问模型的全功能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, 仓库,服务,文件生成

其他资源