ekram/schema-forge

Laravel 包用于创建 CRUD 操作

dev-main 2023-11-24 15:09 UTC

This package is auto-updated.

Last update: 2024-09-24 17:01:06 UTC


README

概述

Laravel SchemaForge 是一个功能强大的 Laravel 包,旨在简化数据库模式设计、CRUD 视图生成和 Laravel 应用程序中的 API 资源方法创建的过程。使用 SchemaForge,开发者可以轻松创建、管理和维护他们的数据库模式,同时生成用于创建、读取、更新和删除(CRUD)操作的观点。此外,它自动创建 API 资源方法,为 Laravel 开发提供全面解决方案。

主要功能

  • 模式设计:Laravel SchemaForge 使开发者能够轻松地设计和管理数据库模式。使用 json,您可以精确且高效地设计您的数据库表。

  • CRUD 视图生成:简化您 Laravel 应用的 CRUD 视图创建。SchemaForge 自动化此过程,生成创建、读取、更新和删除记录所需的视图。

  • API 资源方法:在控制器中生成 API 资源方法,减少手动编码工作量,并加快强大 CRUD API 的开发。

  • 基于列类型验证数据:Laravel SchemaForge 通过根据数据库模式中定义的列类型自动生成验证规则来进一步简化数据验证。此功能确保传入的数据符合预期数据类型,增强数据完整性和安全性。

  • 使用工厂进行数据填充:自动创建具有工厂数据生成器的填充器,允许您高效地用示例数据填充数据库。

  • 数据库模式到 JSON 转换:轻松将现有数据库模式转换为 JSON 文件,使数据库结构的迁移和共享变得无缝。

  • 自动代码生成:SchemaForge 根据数据库模式自动生成迁移文件、模型、控制器、填充器、工厂和 CRUD 操作的视图。

  • 自动用户界面生成:生成 CRUD(创建、读取、编辑)页面,自动创建用于在 Laravel 应用程序中显示、编辑、创建和删除数据的用户界面。

  • 生成 Postman 收集:SchemaForge 包括生成用于测试 API 端点的 Postman 收集的功能。这简化了 API 测试的创建和组织过程,确保 Laravel 应用程序 API 功能的可靠性和正确性。

优点

  • 效率:通过无缝地从模式设计过渡到代码生成、数据填充和模式克隆,在单个包中加快您的开发工作流程。

  • 一致性:确保 CRUD 视图、数据库模式、API 资源方法、数据填充和模式克隆的一致性,从而产生更可维护和有组织的代码。

  • 生产力:专注于构建应用程序的逻辑和功能,而 SchemaForge 处理数据库、视图、API、数据填充和模式克隆层。

安装

您可以通过 Composer 安装此包。运行以下命令

composer require ekram/schema-forge dev-main

将以下类放入您的 config/app.php 文件的 providers 数组中

'providers' => 
[ 
   // ... 
   Ekram\SchemaForge\SchemaForgeServiceProvider::class,
];

如何使用

php artisan make:crud 命令是 Laravel SchemaForge 提供的强大工具,它自动创建基于 JSON 文件中提供的数据的数据库模式和控制器,并带有 CRUD 视图。按照以下步骤有效使用此命令

步骤 1:创建 JSON 文件

  • 在您的Laravel项目根目录中,如果您还没有创建名为schemas的新目录,请创建它。这个目录将作为您的JSON模式文件的存储位置。

  • 首先,创建一个包含数据库模式数据的JSON文件。这个文件应该描述您想要生成的表和字段。以下是一个基本的JSON模式文件的示例

{
    "tableName": "users",                // The name of the table.
    "migration": true,                   // Set to true if you want to create a migration for this table.
    "seeder": true,                      // Set to true if you want to generate a seeder for this table.
    "seederNumRows": 10,                 // Number of rows to be generated in the seeder.
    "resourceController": true,          // Set to true if you want to create a resource controller.
    "apiController": true,               // Set to true if you want to create an API controller.
    "views": true,                       // Set to true if you want to generate views for this table.
    "postman":true,                       // Set to true if you want to generate a postman collection for testing your API endpoints.
    "columns": [
        {
            "name": "name",              // Column name for the user's name.   
            "type": "string",            // Data type for the column (e.g., "string")
            "length": "255",             // length for the Column (e.g., "255").
            "nullable": false,           // Whether the column can be nullable (true or false).
            "unique": false,             // Whether the column should have a unique constraint (true or false).
            "defaultValue": "",          // Default value for the column (empty string if none).
            "index": "",                 // Index type for the column (e.g., "Unique" or ""). Leave empty if no index.
            "hasRelation": false,        // Whether this column has a relationship to another table (true or false).
            "relation":{
                "relationType":"",       // Type of relationship (e.g., "belongsTo", "hasMany", "belongsToMany").

                // type of relations
                // "hasOne, belongsTo, hasMany, belongsToMany, morphTo, morphMany, morphToMany, hasOneThrough, hasManyThrough" 

               
                "relatedTable":"",       // Name of the related table.
                "relatedColumn":"",      // Name of the related column in the related table.

                // Define a "hasManyThrough" relationship with the "tags" table.
                "intermediateModel":"",  // Name of the intermediate model (if applicable, otherwise leave empty).
                "targetModel":""         // Name of the target model (if applicable, otherwise leave empty).
            }
        },
        {
            "name": "email",
            "type": "string",
            "length": "255",
            "nullable": false,
            "unique": true,
            "defaultValue": "",
            "index": "Unique",
         
        },
        {
            "name": "password",
            "type": "string",
            "length": "255",
            "nullable": false,
            "unique": false,
            "defaultValue": "",
            "index": "",
            "hasRelation": false,
            "relatedTable":"",
            "relatedColumn":""
        }
    ]
}

步骤2:运行命令

  • 一旦您有了JSON模式文件,请打开您的终端并运行以下命令
php artisan make:crud your-json-file-name [action]
  • your-json-file-name替换为您的实际JSON文件名。

[动作参数]:此参数是可选的,接受两个值

  • update:使用此选项来更新生成的文件。如果JSON模式或您想刷新生成的代码,则将用新生成的文件覆盖现有文件。

  • reset:使用此选项来重置生成的文件。它将删除所有先前生成的文件,确保一组干净且全新的代码文件。

步骤3:审查生成的文件

执行命令后,Laravel SchemaForge将为您生成多个文件和目录。这些包括

  • 创建指定表和字段的数据库迁移。

  • Laravel SchemaForge在app/Http/Controllers/Api目录中生成一个主API控制器。此控制器作为API端点的入口点。

  • 此外,它还在app/Http/Controllers/目录中创建了一个单独的控制器,用于API资源方法。此控制器也放在app/Http/Controllers/目录中。它提供了处理标准API CRUD操作(如获取、创建、更新和删除记录)的方法。

  • 创建、读取、更新和删除记录的Blade视图文件,位于resources/views/{tableName}目录中。

  • 用于向数据库填充示例数据的Seeder和Factory文件。

  • Laravel SchemaForge自动在routes/api.php文件中配置API的路由。它定义了访问API端点的必要路由。

  • 此外,它还确保API路由也注册在routes/web.php文件中。这使得您可以通过API和Web路由访问API端点。

  • Postman Collection生成:SchemaForge通过生成带有表名的Postman集合来增强您的API开发工作流程。您可以在schema/postman目录中找到此集合。只需将此集合导入Postman,它提供了一种方便的方式来测试您的API端点,确保它们正确且可靠地运行。

  • 在成功运行Laravel项目后,请继续访问以下URL:domain/{tableName}。此URL将允许您查看项目的输出或结果。

命令:php artisan db:clone tableName

php artisan db:clone tableName

php artisan db:clone命令是由Laravel SchemaForge提供的一个强大工具,允许您将所有数据库模式表克隆到JSON文件中,并将它们存储在schemas目录中。此命令是创建前面描述的许多功能的基础,如基于您现有的数据库结构生成迁移、模型、控制器、视图、API资源方法等。

  • [tableName](可选):指定您要克隆的表名。如果提供,则db:clone命令将仅捕获指定表的模式细节,并将其保存为schemas目录中的JSON文件。

示例

要从数据库中克隆“products”表,您可以运行以下命令

php artisan db:clone products

目的

db:clone命令的主要目的是捕获您当前的数据库模式,并以结构化的JSON格式保存它。捕获的架构是生成Laravel应用程序中代码和功能的蓝图。以下是它的工作原理

  • 捕获数据库架构:当您运行 php artisan db:clone 命令时,该命令会检查您的数据库,并提取有关表、列、关系以及其他架构细节的信息。

  • 创建JSON文件:随后,它将此架构信息转换为JSON文件,每个JSON文件代表一个数据库表。这些JSON文件保存在您的Laravel项目中的 schemas 目录下。

  • 功能基础:由 db:clone 生成的JSON文件成为Laravel SchemaForge提供其他功能的基础。例如,当您使用 php artisan make:crud 命令时,它将读取 schemas 目录下的JSON架构文件,根据您的数据库结构自动化创建迁移、模型、控制器、视图、API资源方法、种子文件、工厂等。

自定义功能和特殊设计

在Laravel SchemaForge,我们了解您的项目可能具有独特的要求或需要定制设计。如果您需要为您的Laravel项目提供额外功能或专门的设计工作,我们在这里帮助您!

  • 自定义功能:如果您需要Laravel SchemaForge标准包之外的特定功能,请随时联系我们。我们可以讨论您的需求,并提供针对您项目的定制解决方案。

  • 特殊设计:需要为项目视图提供独特的视觉和感觉吗?我们的团队能够创建与项目品牌和需求完美匹配的定制设计。

要探索这些选项或讨论您的定制需求,请随时联系我们

我们致力于帮助您使用Laravel SchemaForge实现项目目标,无论是通过我们的标准功能还是通过提供定制解决方案。本节鼓励用户在需要额外功能或独特设计时联系您,强调您对定制持开放态度,并准备好协助他们的特定项目需求。

联系方式

如果您有任何问题、遇到问题或需要有关Laravel SchemaForge包的帮助,请随时联系我们。您可以通过以下电子邮件联系我们

我们重视您的反馈,并致力于帮助您充分利用我们的包。