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

通常我们使用 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 协议》,转载必须注明作者和本文链接
openstrong
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 2

服务器导出表结构 啊哈哈哈

2年前 评论
openstrong

推广下我的开源商城 strongshop:gitee.com/openstrong/strongshop

2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!