Laravel 使用 sql 語句 和 sql 檔案 來建立執行資料庫遷移

openstrong發表於2022-04-01

通常我們使用 laravel 內建的方法這樣建立資料庫遷移檔案

public function up()
{
    Schema::create('flights', function (Blueprint $table) {
                $table->id();
                $table->string('name');
                $table->string('airline');
                $table->timestamps();
        });
}

其實我經常會使用第三方資料庫軟體工具 Navicat For Mysql 來設計結構,然後利用軟體檢視 DDL SQL 語句,直接複製過來用。

所以現在我們也可以這樣

public function up()
{
    DB::unprepared("CREATE TABLE `st_strongadmin_user` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '管理員id',
  `user_name` varchar(50) NOT NULL DEFAULT '' COMMENT '登入名',
  `password` varchar(100) DEFAULT NULL COMMENT '登入密碼',
  `remember_token` varchar(100) DEFAULT NULL COMMENT '記住登入',
  `name` varchar(100) DEFAULT '' COMMENT '姓名',
  `email` varchar(255) DEFAULT '' COMMENT '郵箱',
  `phone` varchar(255) DEFAULT '' COMMENT '手機號',
  `avatar` varchar(255) DEFAULT '' COMMENT '頭像',
  `introduction` varchar(255) DEFAULT '' COMMENT '介紹',
  `status` int(1) unsigned NOT NULL DEFAULT '1' COMMENT '狀態 1 啟用, 2 禁用',
  `last_ip` varchar(255) DEFAULT '' COMMENT '最近一次登入ip',
  `last_at` datetime DEFAULT NULL COMMENT '最近一次登入時間',
  `created_at` datetime DEFAULT NULL COMMENT '新增時間',
  `updated_at` datetime DEFAULT NULL COMMENT '更新時間',
  PRIMARY KEY (`id`) USING BTREE,
  UNIQUE KEY `uniq_user_name` (`user_name`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=20 DEFAULT CHARSET=utf8mb4 COMMENT='管理員表';");
}

或者這樣

public function up()
{
    $file = storage_path('install/sql/strongshop.v1.0.sql');
    DB::unprepared($file);
}

小夥伴們都是如何寫資料庫遷移的?歡迎留言討論!

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章