数据库迁移创建表

本篇文章中使用的是mysql数据库,其他数据库需要修改env文件和app配置,请其他地方搜索一下就会找到。

创建示例

1.创建users表:

命令行键入

  1 php artisan make:migration create_users_table //users复数

  1 php artisan make:migration create_users_table --create=users//--create及对应的表名 users 

执行命令后,会在 /database/migrations/ 文件夹下生成对应的数据库迁移文件,通过修改文件里的up 方法和 down方法;

  • 当我们运行迁移时,up 方法会被调用。
  • 当我们回滚迁移时,down 方法会被调用。
  1   public function up()
2 {
3 Schema::create('users', function (Blueprint $table) {
4 $table->bigIncrements('id');
5 $table->string('name')->unique();
6 $table->string('email')->unique();
7 $table->timestamp('email_verified_at')->nullable();
8 $table->string('password');
9 $table->rememberToken();
10 $table->timestamps();
11 });
12 }

2.创建一个数据模型的时候 需要同时创建对应迁移文件可以加上 –m:

  1 php artisan make:model Models/Moment -m 

就在Models文件夹下创建了Moment数据模型 -m在 database/migrations创建了对应的数据库迁移文件。【注:类似的还有-f【工厂类】 –c【控制器】,可以合用-cfm,-cm等】

保存后执行

  1 php artisan migrate

会创建对应up方法中配置的字段的数据表。

【上面up方法中创建一个名为users的数据表,表包含id,name,email,email_verified_at,password,rememberToken[注:记住我选项被选中时生成],created_at,updated_at字段】

数据库迁移创建表

今后若想修改完善之前的已经创建好的数据表 不能再操作之前的数据库迁移文件。

修改 新增或删除字段需要创建一个新的数据库迁移文件:

操作前

请检查你的composer.json文件中已经添加好了doctrine/dbal依赖,Doctrine DBAL库是用来确定数据表中字段当前状态,及用于实现目标调整的SQL查询语句的创建工作的,安装依赖请在控制台中执行:

  1 composer require doctrine/dbal

安装完成后,接下来:

新增字段

在控制台中执行命令:

php artisan make:migration add_要添加的字段名_to_要添加字段的表名_table --table=要添加字段的表名

migrate的文件名称 上面那样写只是为了尽量规范而已,重要的是迁移文件里面的内容:

为示例向users表中添加一个post_id字段,所以我们的命令如下:

  1 php artisan make:migration add_post_id_to_users_table --table=users

然后会在database/migrations创建了对应的数据库迁移文件***_add_post_id_to_users_table.php:

  1 public function up()
2 {
3 Schema::table('users', function (Blueprint $table) {
4 $table->bigInteger('post_id')->nullable()->after('email');
5 });
6 }
7
8 public function down()
9 {
10 Schema::table('users', function (Blueprint $table) {
11 $table->dropColumn('post_id');
12 });
13 }

【注意方法里已经不是Schema::create方法的调用,而是Schema::table方法的调用了。】

然后,运行

  1  php artisan migrate

即可生效

修改原有字段属性

如果是修改,就调用change方法即可,比如想增加name 字段的字符串长度:

  1 Schema::table('users', function (Blueprint $table) {
2 $table->string('name', 50)->change();
3 });

比如将字段修改为可空:

  1 Schema::table('users', function (Blueprint $table) {
2 $table->string('name', 50)->nullable()->change();
3 });

然后,运行即可生效

修改字段名

  1 Schema::table('users', function (Blueprint $table) {
2 $table->renameColumn('from', 'to');//from字段改名为to字段
3 });

然后,运行即可生效

删除字段

如果目的是删除之前已经存在的表的某些字段,新建数据库迁移文件后,在该文件的up方法中键入如下代码;

  1 Schema::table('users', function (Blueprint $table) {
2 $table->dropColumn('votes');//删除users表的votes字段
3 });
4
5 Schema::table('users', function (Blueprint $table) {
6 $table->dropColumn(['votes', 'avatar', 'location']);//删除users表里面的votes,avatar,location这三个字段
7 });

然后,运行即可生效

Laravel 6.X 数据库迁移 创建表 与 修改表的更多相关文章

  1. Laravel5.5 数据库迁移:创建表与修改表

    数据库迁移是数据库的版本管理,要使用数据库迁移,需要在.env文件中连接好数据库(不多说).laravel本身已经存在user表和password_resets表的迁移了,因此,执行 php arti ...

  2. Laravel5.x的php artisan migrate数据库迁移创建操作报错SQLSTATE[42000]解决

    Laravel5.x运行迁移命令创建数据表:php artisan migrate报错. Illuminate\Database\QueryException  : SQLSTATE[42000]: ...

  3. Laravel 5.2数据库--迁移migration

    Laravel中的migrations文件存放的是数据库表文件等结构,可以说是一个跟git差不多的,可以说像是数据库的版本控制器,所以可以叫做迁移.因为它可以很快速的很容易地构建应用的数据库表结构. ...

  4. Laravel 5.2 数据库迁移和数据填充

    一.数据库迁移 Laravel 的数据库迁移提供了对数据库.表.字段.索引的一系列相关操作.下面以创建友情链接表为例. 1. 创建迁移 使用 Artisan 命令  php artisan make: ...

  5. laravel中的数据库迁移

    1.创建数据库迁移文件:生成数据库迁移文件,前面跟着时间戳: php artisan make:migration create_posts_table 创建数据库迁移文件:可以重命名数据表名: -- ...

  6. Laravel 5.4 数据库迁移一次之后就不起作用!

    https://segmentfault.com/q/1010000010806351 我在命令行中生成了一个新的迁移脚本: 当我执行命令:php artisan migrate 时 显示迁移成功,并 ...

  7. 数据库迁移(创建关联等操作) Target database is not up to date报错

    使用Mysql-sqlalchemy执行数据库迁移 来更新数据库: 队长试探性的在网上找了几种方案 依然没有解决报错问题: 后来看了https://www.aliyun.com/jiaocheng/4 ...

  8. 必须会的SQL语句(二) 创建表、修改表结构、删除表

    1.创建数据库表 --使用哪个数据库,如果不写这一句是默认的数据库,也可以用鼠标选当前数据库 use testDB --创建表    Create Table tablename    (       ...

  9. MySQL 5.6学习笔记(数据库基本操作,查看和修改表的存储引擎)

    1. 数据库基本操作 1.1  查看数据库 查看数据库列表: mysql> show databases; +--------------------+ | Database | +------ ...

随机推荐

  1. 求int型正整数在内存中存储时1的个数 && int型的数到底最大是多少?

    输入一个int型的正整数(十位数之内!嘞!),计算出该int型数据在内存中存储时1的个数. #include<bits/stdc++.h> using namespace std; int ...

  2. linux虚拟机安装jenkins及maven/jdk配置

    一.jenkins安装 (1)tomcat下载,下载地址:https://tomcat.apache.org 选择对应的版本,以下以新版的tomcat 9.0版本为例 下载zip包 (2)jenkin ...

  3. Unity小知识点大全(二)

    51.Inspector调试模式 在Inspector面板右上角的下拉菜单中,选择Debug命令,启动调试模式,此时将显示组件包含的所有变量,包括私有变量,当运行编辑器时,可以实时查看各组件所有变量的 ...

  4. Mac系统升级后git没法使用的问题

    今天更新了mac系统(Catalina)发现之前的项目没法提交,然后大概查了一下啊mac更新方面的问题 mac每次更新时系统就会卸载xcode 在终端输入  xcode-select --instal ...

  5. Oracle 11G统计信息自动收集及调整

    查询统计信息的收集所对应的task,以及当前状态 col CLIENT_NAME for a50col TASK_NAME for a20SELECT client_name, task_name, ...

  6. Docker - 容器的 连接 与 退出

    概述 连接容器, 退出容器 命令 run exec attach 退出 选项 -i -t -d 1. docker run 概述 docker run 通常用来创建新容器 docker run 的 三 ...

  7. ALSA driver--PCM实例创建框架

    在介绍PCM 之前,我们先给出创建PCM实例的框架. #include <sound/pcm.h> .... /* hardware definition */ static struct ...

  8. ACM的探索之Just Skip The Problem

    -----------------心怀虔诚,奋勇前进,fighting!!!!!! Problem Description: inclusively:          包括一切地;包含地 simul ...

  9. git和github的关系以及简单易懂的理解

    git和github的关系   写在前面:我身边好多人问我git和github的区别,想必对于好多人没学过的大佬们恐怕也是一脸懵逼,但是不知道也是不行的,所以我今天就来讲一讲这二者的区别和联系. 用一 ...

  10. CSS-文本溢出省略号表示

    前提条件是所引用的元素是块级元素,因为使用了WebKit的CSS扩展属性,该方法适用于WebKit浏览器及移动端 单行溢出处理: .text-overflow{ overflow: hidden; t ...