filippo-toso/models-generator

一个Laravel Artisan命令,用于从数据库表中自动生成模型

v3.0.4 2024-07-26 06:08 UTC

README

一个用于从数据库表中自动生成模型的Laravel Artisan命令。

要求

  • PHP 5.6+
  • Laravel 5.4+
  • Doctrine DBAL +2.8

安装

使用Composer安装

composer require filippo-toso/models-generator

它是如何工作的?

这个生成器非常简单。它从数据库构建模型,并将它们保存在App\Models命名空间中。然后,它将这些模型与App命名空间中的用户对应模型扩展。如果您遵循Laravel的表和列命名指南,它将非常出色 ;)

在执行了第一次生成后,您可以像通常一样进入App命名空间中的模型进行自定义。如果您更改了数据库(在开发过程中经常发生),您可以再次运行生成器(启用覆盖选项),无需额外努力即可获取更新后的模型集。

这种解决方案使您能够享受自动代码生成的便利,同时还可以添加/更改模型的行为(例如,更改属性可见性、添加关系等)。

默认情况下,生成器不会创建Laravel表(如工作、缓存等)的模型。您可以通过发布包资源并编辑config/models-generator.php文件来修改此行为。

配置

您可以使用以下命令发布配置文件

php artisan vendor:publish --tag=config --provider="FilippoToso\ModelsGenerator\ServiceProvider"

config/model-generator.php文件允许您

  • 定义哪些表排除在生成之外(例如,缓存、工作、迁移等)
  • 定义一对一关系
  • 定义多态关系

只需打开文件并阅读注释 :)

请注意,一对一和多对多关系是使用您在数据库中定义的外键构建的。

选项

从命令行预定义的使用方式是

php artisan generate:models

此命令执行以下步骤

  • 创建一个App\Models命名空间。
  • 用数据库中的模型填充它。
  • 在App命名空间中创建用户可编辑的模型。
  • 为用户模型创建App\Models\Traits\UserRelationships特质。

如果App\Models命名空间中存在现有模型,则默认不会覆盖它们(请参阅下一个示例)。如果App命名空间中存在现有模型,则永远不会覆盖。

您可以使用以下参数修改默认行为

php artisan generate:models --overwrite

如果设置了覆盖选项,则生成器将始终覆盖App.Models命名空间中的模型。如果您遵循不要更改这些模型而编辑App命名空间中的模型的规则,则可以安全地这样做。

php artisan generate:models --connection=sqlite

您可以根据需要指定不同的连接。

工作流程

为了从此包中获得最大利益,您应遵循以下工作流程

  • 设计数据库
  • 编写迁移(包括所有必需的外键)
  • 迁移数据库
  • 配置生成器
  • 运行生成器
  • 在App命名空间中自定义模型

然后,每次您创建和运行新的迁移时,都应再次执行生成器,以保持模型与数据库同步。

您还必须遵循Laravel关于表和列命名的指南,否则生成器将无法识别现有关系。