berthott/laravel-crudable

Laravel CRUD 资源助手

3.0.5 2023-10-16 11:40 UTC

README

Laravel CRUD 路由助手。

通过向模型添加特性,轻松添加完整的 CRUD 路由 + 控制器。

安装

$ composer require berthott/laravel-crudable

概念

该包实现了一种通用的方法,将 CRUD 路由的设置从多个不同的位置(路由 / 控制器)移动到模型本身。这不会阻止您添加自己的自定义路由和控制器。如果需要以特定顺序创建路由,则存在辅助方法。

前端连接

索引路由没有实现分页。在实现与此路由的连接时需要考虑这一点,因为这可能导致巨大的有效载荷。

  • 尽量在关系包含大量数据时避免使用预加载关系(不要在 $with 数组中使用它们)。
  • 如果您只想在显示路由中预加载关系,可以使用 showRelations()

将来可以在这里使用可选的分页。

使用方法

  • 创建您的表和相应的模型,例如使用 php artisan make:model YourModel -m
  • Crudable 特性添加到您刚生成的模型中。
  • 该包将注册这些标准 API CRUD 路由(请参阅 API 资源路由)。
    • 索引,get yourmodels/ => 获取所有实体
    • 显示,get yourmodels/{yourmodel} => 获取单个实体
    • 创建,post yourmodels/ => 创建新的实体
    • 更新,put yourmodels/{yourmodel} => 更新实体
    • 销毁,delete yourmodels/{yourmodel} => 删除实体
  • 此外,它还注册了
    • 批量删除,delete yourmodels/destroy_many => 通过其给定的 ID 删除多个实体
    • 模式,get yourmodels/schema => 获取数据库模式
  • 通过实现以下方法之一添加关系
    • attachables() 将现有相关模型附加到模型
    • creatables() 创建新的相关模型并将它们附加到模型
    • customRelations() 为将关系添加到模型实现您自己的行为
  • 有关如何设置特定功能的更多信息,请参阅 \berthott\Crudable\Models\Traits\Crudable

选项

要更改默认选项,请使用

$ php artisan vendor:publish --provider="berthott\Crudable\CrudableServiceProvider" --tag="config"
  • 继承自 laravel-targetable
  • namespace: 字符串或包含一个或多个应监控配置特性的命名空间的数组。默认为 App\Models
  • namespace_mode: 定义命名空间的搜索模式。 ClassFinder::STANDARD_MODE 将仅查找精确匹配的命名空间,ClassFinder::RECURSIVE_MODE 将查找所有子命名空间。默认为 ClassFinder::STANDARD_MODE
  • prefix: 定义路由前缀。默认为 api
  • 通用包配置
    • middleware: 应应用于所有生成路由的所有中间件的数组。默认为 ['api']

架构

  • 该软件包依赖于 laravel-targetable 通过特质将特定功能连接到 Laravel 模型实体(Crudable)。

兼容性

已与 Laravel 10.x 进行过测试。

许可证

请参阅 许可证文件。版权所有 © 2023 Jan Bladt。