laracademy / generators
此包将根据您的数据库表本身生成 Laravel 模型,自动填充所需字段。
Requires
- php: >=7.4
README
Laracademy Generators - 是一套工具集,有助于加快 Laravel 应用程序的开发过程。
作者
要求
- PHP 7.4+
- Laravel 6.*
- MySQL *
** 对于 Laravel 5.*,请使用版本 1.5
用法
步骤 1: 通过 Composer 安装
composer require "laracademy/generators" --dev
步骤 2: Artisan 命令
现在我们已经将生成器添加到我们的项目中,接下来要做的就是运行 Laravel 的 Artisan 命令
php artisan
您将在列表中看到以下内容
generate:modelfromtable
命令
generate:modelfromtable
此命令将读取您的数据库表并基于该表结构生成模型。可填充字段、类型转换、日期甚至命名空间都将自动填充。
您可以使用此命令一次性生成单个表、多个表或所有表。
此命令附带了一系列不同的选项,请参阅下面的每个参数
- --table=
- 如果填写此参数,将为给定的表生成模型
- 您还可以通过逗号分隔的值传递一个表列表
- 如果省略,将生成所有表的模型
- 在这种情况下,您可以选择在
config/modelfromtable.php
中指定白名单/黑名单 migrations
表默认将被黑名单
- 在这种情况下,您可以选择在
- --connection=
- 默认情况下,如果省略,将使用
config/database.php
中找到的默认连接 - 要指定一个连接,首先确保它在您的
config/database.php
中存在
- 默认情况下,如果省略,将使用
- --folder=
- 默认情况下,所有模型都存储在您的 app/ 目录中。如果您希望将它们存储在其他地方,可以提供从您的 Laravel 应用程序基本目录的相对路径。
- 或者,您可以使用
config/modelfromtable.php
中的 lambda 动态指定文件夹路径
- --namespace=
- 默认情况下,所有模型都将具有
App\Models
的命名空间 - 或者,您可以使用
config/modelfromtable.php
中的 lambda 动态指定命名空间
- 默认情况下,所有模型都将具有
- --debug=[true|false (default)]
- 在运行时显示更多信息
- --singular=[true|false (default)]
- 这将创建一个单数命名的模型,例如 "Categories" -> "Category"
- --overwrite=[true|false (default)]
- 如果存在则覆盖模型文件
- --timestamps=[true|false (default)]
- 是否添加时间戳
示例 (CLI)
生成单个表
php artisan generate:modelfromtable --table=users
生成多个表
php artisan generate:modelfromtable --table=users,posts
更改到 database.php
中找到的其他连接
php artisan generate:modelfromtable --connection=spark
更改到其他文件夹,例如 /app/Models
php artisan generate:modelfromtable --table=user --folder=app/Models
保存默认值和动态 lambdas 的配置文件
一个 配置文件 应该在您的项目配置文件夹中(如果没有,可以轻松创建)。通过此文件,您可以设置常用的默认值,以减少您在命令行调用中所需的输入。一些字段,如 namespace
,接受静态值或更强大的 lambda 生成动态值。CLI 中不可用的其他字段也存在于配置中。请参阅以下内容。
白名单/黑名单(仅配置)
特别大的数据库通常包含许多不需要模型的数据表。这些表可以通过白名单或黑名单(或者两者都使用)轻松筛选。Laravel的“迁移”表已经包含在黑名单中。一个很好的功能是,如果适合您的情况,您可以通配符方式指定表名...
'blacklist' => ['migrations']; 'whitelist' => ['user_address', 'system_*'];
文件名,使用lambda函数
大型数据库有时会使用前缀模式进行组织,您可以使用lambda函数来通过这种方式组织模型文件。
'filename' => fn(string $tableName) => Str::studly(Str::after($tableName, '_')),
在这个例子中,'system_user'将生成文件名'User'。注意,这也可以通过CLI进行设置,但可能在那里设置并不那么有意义。
文件夹路径,使用lambda函数
使用上一个例子,您也可以使用前缀来组织文件夹路径...
'folder' => (function (string $tableName) { $prefix = Str::studly(Str::before($tableName, '_')); $path = app()->path('Models') . "/{$prefix}"; if (!is_dir($path)) { mkdir($path); } return $path; }),
在这个例子中,'system_user'将生成文件夹路径'path/to/your/install/app/Models/System'
命名空间,使用lambda函数
使用上一个例子,您接下来会想要生成与文件路径匹配的命名空间
'namespace' => fn(string $folderpath) => 'App/Models' . Str::after($folderpath, app()->path('Models')),
因此文件夹路径'path/to/your/install/app/Models/System'将生成命名空间'App\Models\System'
分隔符(仅配置项)
默认情况下,数组值用简单的逗号分隔,但常见的偏好是用换行符分隔。
'delimiter' => ",\n" . str_repeat(' ', 8),
结果
class SomeModel extends Model { protected $fillable = [ 'SomeField', 'AnotherField', 'YetAnotherField' ];
许可协议
ModelGen是开源软件,遵循MIT许可协议
错误报告和功能请求
请尽可能详细地提供有关提交问题和功能请求的信息
免责声明
软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、特定用途适用性和非侵权性保证。在任何情况下,作者或版权持有人不对任何索赔、损害或其他责任负责,无论这些责任是由于合同、侵权或其他原因引起的,无论是在软件的使用过程中还是由于使用或其他方式与软件有关。