ahmedebead / lara-crud
一个用于生成API CRUD操作的Laravel包。
v0.1.8
2024-09-12 13:05 UTC
Requires
- php: ^8.0|^8.1|8.2
- laravel/framework: ^9.0 || ^10.0
- spatie/laravel-query-builder: ^4.0 || ^5.0 || ^6.0
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 许可证 许可。