laracademy/generators

此包将根据您的数据库表本身生成 Laravel 模型,自动填充所需字段。

3.7 2023-10-21 03:09 UTC

This package is auto-updated.

Last update: 2024-09-21 04:59:05 UTC


README

Latest Stable Version Total Downloads Latest Unstable Version License

Laracademy Generators - 是一套工具集,有助于加快 Laravel 应用程序的开发过程。

作者

要求

  1. PHP 7.4+
  2. Laravel 6.*
  3. 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许可协议

错误报告和功能请求

请尽可能详细地提供有关提交问题和功能请求的信息

免责声明

软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、特定用途适用性和非侵权性保证。在任何情况下,作者或版权持有人不对任何索赔、损害或其他责任负责,无论这些责任是由于合同、侵权或其他原因引起的,无论是在软件的使用过程中还是由于使用或其他方式与软件有关。