Laravel 使用 sql 语句 和 sql 文件 来创建执行数据库迁移

Laravel框架
406
0
0
2022-09-21

通常我们使用 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);
}

小伙伴们都是如何写数据库迁移的?欢迎留言讨论!