bakgul/laravel-code-generator

该包旨在生成目标文件上的代码以提高生产力。在这个第一个版本中,关系覆盖了几乎全部。

v4.0.1 2023-02-22 17:15 UTC

This package is auto-updated.

Last update: 2024-09-22 21:15:26 UTC


README

该包旨在生成目标文件上的代码以提高生产力。在这个第一个版本中,关系覆盖了几乎全部。

免责声明

该包应该已经准备好投入生产,但尚未经过充分测试。您应该谨慎使用,因为此包将操作您的文件和文件夹。始终使用版本控制,并确保您有 文件历史记录 以便能够回滚更改。

v3 更新指南

  • 转到 vendor/bakgul/kernel/config/apps.php 文件并查看更改。在每个应用下都有一个名为 routes 的新键。将这个新结构带到您配置文件夹中的 packagify.php 文件。
  • 'bundler' => 'vite' or 'mix' 添加到您配置文件夹中的 packagify.php 文件“主从内核”部分下的主数组。

安装

如果您已安装 Packagified Laravel,则应该已经拥有此包。所以跳过安装。

sail composer require bakgul/laravel-code-generator

注意:另一个名为 Laravel 文件创建器 的包不会通过此包安装。但此包创建交叉模型时需要它。如果您使用交叉模型,请之后安装 Laravel 文件创建器

Eloquent 关系

此包可用于将 Eloquent 关系添加到模型和迁移中。实现的关联有:

  • 一对一
  • 一对一多态
  • 通过一个拥有一个
  • 一对多
  • 一对多多态
  • 通过一个拥有多个
  • 多对多
  • 多对多多态

在未来版本中,还将涵盖 一对多

签名

create:relation {relation} {from} {to} {mediator?} {--m|model} {--p|polymorphic}

参数

  • relation:Eloquent 关系类型之一的缩写

    • oto:一对一
    • otm:一对多
    • mtm:多对多
  • from:这是关系的“拥有”部分。参数的格式为 package/table:column:model

    • package:它是可选的,在创建“独立 Laravel”或“独立包”时将被忽略。

      • exists:在指定的包中搜索模型。
      • missing:检查所有可能的模型容器以查找模型。
    • table:它是必需的,应该是迁移文件名中“create_”和“_table”之间的部分。

    • column:它是可选的。

      • exists:本地键将是给定的列。如果它不存在,它将作为一个整数添加。当关系是一对多或多对多时,这将在关系的反向部分创建外键。例如,如果 tableuserscolumnemail,则外键将是 user_email,除非关系的反向部分有列。当关系是多对多时,这将在交叉表中使用。
      • missing:它将是“id”,并将应用 Laravel 命名约定。
    • model:它是可选的。

      • exists:当模型名无法从表名生成时,您应该指定它。
      • missing:模型名称将从表名生成。
  • to:这是关系的“属于”部分。参数的格式为 package/table:column:model

    • package:它是可选的,在创建“独立 Laravel”或“独立包”时将被忽略。

      • exists:在指定的包中搜索模型。
      • missing:检查所有可能的模型容器以查找模型。
    • table:它是必需的,应该是迁移文件名中“create_”和“_table”之间的部分。

    • column:它是可选的。

      • 存在:如果它以 "_id" 结尾,它将被直接使用。否则,它将被追加到 "has" 部分的表名单数形式以生成外键。如果 来源表vip_users,并且 email,则外键将是 vip_user_email。但如果 user_id,则外键将是 user_id。当关系是多对多时,这将用作连接表的键。
      • 缺失:它将是 "id",并且将应用 Laravel 命名规范。
  • 调解者(作为桥梁):这是 "Has One Through" 和 "Has Many Through" 关系的中间人。因此,当关系是 otootm 时,名为 "mediator" 的参数成为中间人。参数的模式是 包/表:列:模型

    • package:它是可选的,在创建“独立 Laravel”或“独立包”时将被忽略。

      • exists:在指定的包中搜索模型。
      • 缺失:检查所有可能的模式容器以找到模式。如果找不到,它将在与 from 相同的命名空间中创建。
    • table:它是必需的,应该是迁移文件名中“create_”和“_table”之间的部分。

    • :这也是可选的,但它的内部模式与其他参数的列不同。这里预期的是两个通过点粘合的列名 (col_1.col_2)。第一个列是连接到 has 一侧的外键,而第二个列是与 belongsTo 一侧相关的本地键。也就是说,您可以指定仅一个列名。在这种情况下,另一个将是 "id"。 "email" 等于 "email.id",".email" 等于 "id.email",没有列意味着 "id.id"。最后,如果第二个键以 "_id" 结尾,它将不带有表名前缀使用。

    • 模型:这是可选的。只有在您希望迁移和模型名称无关时才能指定。

  • 调解者(作为枢纽):当关系是 "多对多" 时,调解者变为枢纽。它是可选的。如果它不存在,则遵循 Laravel 规范。换句话说,如果 fromcomments,而 toposts,则迁移将是 comment_post。参数的模式是 包/表:模型

    • :这是可选的。

      • 存在:在指定的包中搜索模型。如果找不到,它将创建在那里。
      • 缺失:检查所有可能的模式容器以找到模式。如果找不到,它将在与 From 相同的命名空间中创建。
    • :如果传递了调解者块,则需要表名。

    • 模型:如果您想为枢纽表创建模型,可以在这里指定模型名称。如果模型名称可以从表名生成,如 post_userPostUser,则只需将 -m 添加到命令中,而不是指定模型名称。

选项

  • 模型:在生成多对多关系时,如果命令中添加了 " -m " 或 " --model ",则将为枢纽表创建模型。

  • 多态:如果命令有 " -p " 或 " --polymorphic ",则将关系转换为指定关系类型的多态。

打包的 Laravel

包括此包在内的主要包可以在此处找到: Packagified Laravel

此包将要安装的包