yui019/hori

该软件包最新版本(1.1.0)没有可用的许可信息。

受Prisma启发的Laravel数据库模式库。

1.1.0 2024-06-22 00:17 UTC

This package is auto-updated.

Last update: 2024-09-22 00:56:13 UTC


README

Prisma 启发的Laravel数据库模式库。

这与正常的Laravel迁移有什么不同?

如果你从未使用过NodeJS库 Prisma,它的作用是为你处理创建迁移。你有一个单一的schema文件,在其中写入所有表和添加/删除表的迁移或列都是自动生成的。

所以如果你想从表中删除一列,你只需要在schema文件中删除它,然后运行 php artisan hori:generate,这将自动生成一个删除该列的迁移。

这种方法的两个优点

  1. 直接在一个schema文件上工作比手动为每个更改创建迁移要容易得多、快得多
  2. 你不需要查看所有迁移或数据库来了解你目前有哪些表和行 - 你只需查看schema文件即可

用法

你可以使用以下命令安装Hori

composer require yui019/hori

之后,你运行

php artisan hori:install

这将创建一个包含 schema.php 文件的 hori 目录在 database 目录中。

这是该文件的默认外观

<?php

use Illuminate\Database\Schema\Blueprint;
use Yui019\Hori\Schema;

return new class extends Schema
{
    public function create(): void
    {
        $this->table('users', function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->string('email')->unique();
            $table->timestamp('email_verified_at')->nullable();
            $table->string('password');
            $table->rememberToken();
            $table->timestamps();
        });

        $this->createDefaultLaravelTables();

        // ...
    }
};

$this->createDefaultLaravelTables() 行创建默认的laravel表,如 password_reset_tokenscachejobs 等。 - 即每个laravel项目中默认存在的3个迁移创建的所有表,除了 users 表。

该表在 schema.php 文件的上方创建。我做出这个选择的原因是,修改默认的 users 表是非常常见的,而其他表有99%的时间保持不变,所以感觉在默认情况下将所有这些表都放在那里会显得太拥挤。

该命令还会删除这三个默认迁移。你可以选择传递 --dont-delete-default-migrations 选项来避免删除。

接下来,你运行命令

php artisan hori:generate

并给它一个迁移名称。

这将创建一个在 database/migrations 目录中的迁移,该迁移将创建所有这些表。

现在,假设你想向用户表添加一个 photo 列。通常,你需要手动创建一个 add_photo_column 迁移来添加该列(在 down 方法中删除它)。

使用Hori,你只需向schema文件中添加一行,如 $table->string('photo');,然后再次运行 php artisan hori:generate。这将自动创建一个执行相同操作的迁移。

特性

  • 创建表
  • 修改表
  • 删除表
  • 重命名表
  • 添加列
  • 删除列
  • 添加外键约束
  • 更改列
  • 重命名列
  • 根据外键约束自动重新排序创建的表