Skip to main content
  1. All Posts/

laravel-dacapo

Tools PHP

Laravel-Dacapo





Introduction

Dacapo is a Laravel migration file creation support library.
Define the table structure in the schema yml file, Always generate the latest and tidy migration file.
This library is intended for use only in the coding phase.
In the operation phase, uninstall and return to normal migration operation.

Installation

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

Usage

Generate default schema.yml

$ php artisan dacapo:init

database/schemas/default.yml
By default, a schema file for Laravel8 is generated.

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:

Generate migration files

$ php artisan dacapo

3 files are generated and migrate fresh.

  • 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 Option

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

Schema file format

  • {} any value
  • database/schemas/*.yml
  • If it cannot be expressed in YAML, it can be used together with standard migration.
    • 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 Clear Migrations

$ php artisan dacapo:clear
$ php artisan dacapo:clear --all
  • --all Delete including standard migration files.

Dacapo Stub publish

$ php artisan dacapo:stub:publish

Dacapo Uninstall

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