ucan-lab/laravel-dacapo

Laravel 迁移支持工具


README

Build Status Latest Stable Version Total Downloads Daily Downloads License

简介

Dacapo 是一个 Laravel 迁移文件创建支持库。在 schema yml 文件中定义表结构,总是生成最新且整洁的迁移文件。

此库仅适用于编码阶段。在操作阶段,请卸载并返回正常迁移操作。

安装

$ composer require --dev ucan-lab/laravel-dacapo

使用

生成默认 schema.yml

$ php artisan dacapo:init

database/schemas/default.yml 默认情况下,为 Laravel8 生成一个模式文件。

users:
  columns:
    id:
    name: string
    email:
      type: string
      unique:
    email_verified_at:
      type: timestamp
      nullable:
    password: string
    rememberToken:
    timestamps:

password_resets:
  columns:
    email:
      type: string
      index:
    token: string
    created_at:
      type: timestamp
      nullable:

failed_jobs:
  columns:
    id:
    uuid:
      type: string
      unique:
    connection: text
    queue: text
    payload: longText
    exception: longText
    failed_at:
      type: timestamp
      useCurrent:

生成迁移文件

$ php artisan dacapo

生成3个文件并迁移。

  • 1970_01_01_000001_create_failed_jobs_table.php
  • 1970_01_01_000001_create_password_resets_table.php
  • 1970_01_01_000001_create_users_table.php

Dacapo 选项

# Execute migrate and seeding
$ php artisan dacapo --seed
# Do not execute migrate
$ php artisan dacapo --no-migrate

模式文件格式

  • {} 任意值
  • database/schemas/*.yml
  • 如果无法用 YAML 表达,则可以使用标准迁移一起使用。
    • php artisan make:migration
# COMMENT
{TableName}:
  columns:
    {ColumnName}: {ColumnType}
    {ColumnName}:
      type: {ColumnType}
    {ColumnName}:
      unique: true
      nullable: true
      default: {DefaultValue}
      comment: {ColumnName}
      {ColumnModifier}: {ColumnModifierValue}
  indexes:
    - columns: {ColumnName}
      type: {IndexType}
    - columns: [{ColumnName}, {ColumnName}]
      type: {IndexType}
    - columns: {ColumnName}
      type: {IndexType}
      name: {IndexName}
  foreign_keys:
    - columns: {ColumnName}
      references: {ReferenceColumnName}
      table: {ReferenceTableName}
    - columns: {ColumnName}
      references: {ReferenceColumnName}
      table: {ReferenceTableName}
      onUpdateAction: {ConstraintProperty}
      onDeleteAction: {ConstraintProperty}
    - columns: [{ColumnName}, {ColumnName}]
      references: [{ReferenceColumnName}, {ReferenceColumnName}]
      table: {ReferenceTableName}

{TableName}:
  columns:
    {ColumnName}: {ColumnType}

Dacapo 清理迁移

$ php artisan dacapo:clear
$ php artisan dacapo:clear --all
  • --all 删除包括标准迁移文件。

Dacapo Stub 发布

$ php artisan dacapo:stub:publish

Dacapo 卸载

$ php artisan dacapo:uninstall
$ composer remove --dev ucan-lab/laravel-dacapo