ahmedebead/lara-crud

一个用于生成API CRUD操作的Laravel包。

v0.1.8 2024-09-12 13:05 UTC

This package is auto-updated.

Last update: 2024-09-12 13:07:40 UTC


README

Lara-CRUD包简化了在Laravel应用程序中创建、读取、更新和删除数据的流程。此包提供了一套有助于处理常见CRUD操作的特性和方法,确保开发流程流畅。

安装

要通过Composer安装此包,请运行以下命令

composer require ahmedebead/lara-crud

使用方法

步骤 1:生成CRUD操作

要生成CRUD操作,请使用以下Artisan命令。命令将提示您输入与模型关联的数据库表名

php artisan crud:go

运行此命令后,您将被提示输入与模型关联的数据库表名。

步骤 2:发布存根和配置

要自定义生成的文件,可以使用以下Artisan命令发布包提供的存根和配置文件

php artisan vendor:publish --provider="Ahmed3bead\LaraCrud\LaraCrudServiceProvider"

这将配置到config/lara-crud.php,存根到resources/stubs/vendor/lara-crud

理解生成的文件

运行生成命令后,在app目录内将创建一个新文件夹,用于指定的表(模型),其中包含所有必要的文件和文件夹。

生成的文件夹和文件

该包将在app目录内为指定的表创建一个文件夹。此文件夹将包含所有必要的子文件夹和类,组织如下

  • 控制器:处理模型的所有HTTP请求。
  • DTOs:数据封装对象。
  • 资源:格式化API响应。
  • 策略:授权策略。
  • 选择器:选择特定数据的方法。
  • 通知:与模型相关的通知。
  • 事件:模型的事件。
  • 监听器:事件监听器。
  • 映射器:数据映射器。
  • 模型:Eloquent模型类。
  • 仓库:数据访问层。
  • 请求:请求验证类。
  • 服务:业务逻辑服务。
  • 作用域:查询作用域。
  • 特性:可重用特性。
  • 过滤器:查询过滤器。

该包为您做什么

Lara-CRUD包自动化以下任务

  • 控制器生成:用于管理CRUD操作HTTP控制器。
  • 数据传输对象(DTOs):用于数据封装和传输的类。
  • API资源:用于JSON序列化的资源类。
  • 策略:模型的授权逻辑。
  • 选择器:用于获取特定数据的辅助方法。
  • 通知:与模型相关的通知类。
  • 事件和监听器:事件驱动架构支持。
  • 数据映射器:用于映射数据到不同格式的类。
  • Eloquent模型:用于数据库操作的模型类。
  • 仓库:数据访问逻辑的仓库模式。
  • 请求类:输入数据的验证逻辑。
  • 服务类:业务逻辑封装。
  • 查询作用域:可重用查询逻辑。
  • 特性:使用特性共享功能。
  • 查询过滤器:用于过滤查询结果的类。

包的功能

标准化的API响应

该包提供了一个具有处理标准化API响应方法的特性,使错误处理和成功响应保持一致。

示例:成功响应

$response = $this->setSuccessResponse("Operation successful.", HttpStatus::HTTP_OK);

错误处理

该包包括处理和格式化错误响应的统一方法。

示例:错误响应

$response = $this->setErrorResponse("An error occurred.", HttpStatus::HTTP_ERROR);

事务管理

该包支持在数据库事务中执行代码并处理响应。

示例:事务代码

$response = $this->tryAndResponse(function () {
    // Your transactional code here
});

分页响应

自动设置带有相关元数据的分页响应。

示例:分页响应

$response = $this->setPaginateResponse($paginator);

HTTP 状态码

提供常见 HTTP 状态码的常量,确保 API 响应的一致性。

HttpStatus::HTTP_OK // 200
HttpStatus::HTTP_ERROR // 400
// Other status codes...

完整示例

创建产品

POST /api/products
Content-Type: application/json

{
    "name": "Sample Product",
    "description": "This is a sample product.",
    "price": 19.99
}

检索所有产品

GET /api/products

检索单个产品

GET /api/products/{id}

更新产品

PUT /api/products/{id}
Content-Type: application/json

{
    "name": "Updated Product",
    "description": "This is an updated product.",
    "price": 29.99
}

删除产品

DELETE /api/products/{id}

贡献

欢迎贡献!请随意提交问题和拉取请求以改进。

许可证

此包是开源软件,根据 MIT 许可证 许可。