Laravel 6.X 数据库迁移 创建表 与 修改表
数据库迁移创建表
本篇文章中使用的是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 数据库迁移 创建表 与 修改表的更多相关文章
- Laravel5.5 数据库迁移:创建表与修改表
数据库迁移是数据库的版本管理,要使用数据库迁移,需要在.env文件中连接好数据库(不多说).laravel本身已经存在user表和password_resets表的迁移了,因此,执行 php arti ...
- Laravel5.x的php artisan migrate数据库迁移创建操作报错SQLSTATE[42000]解决
Laravel5.x运行迁移命令创建数据表:php artisan migrate报错. Illuminate\Database\QueryException : SQLSTATE[42000]: ...
- Laravel 5.2数据库--迁移migration
Laravel中的migrations文件存放的是数据库表文件等结构,可以说是一个跟git差不多的,可以说像是数据库的版本控制器,所以可以叫做迁移.因为它可以很快速的很容易地构建应用的数据库表结构. ...
- Laravel 5.2 数据库迁移和数据填充
一.数据库迁移 Laravel 的数据库迁移提供了对数据库.表.字段.索引的一系列相关操作.下面以创建友情链接表为例. 1. 创建迁移 使用 Artisan 命令 php artisan make: ...
- laravel中的数据库迁移
1.创建数据库迁移文件:生成数据库迁移文件,前面跟着时间戳: php artisan make:migration create_posts_table 创建数据库迁移文件:可以重命名数据表名: -- ...
- Laravel 5.4 数据库迁移一次之后就不起作用!
https://segmentfault.com/q/1010000010806351 我在命令行中生成了一个新的迁移脚本: 当我执行命令:php artisan migrate 时 显示迁移成功,并 ...
- 数据库迁移(创建关联等操作) Target database is not up to date报错
使用Mysql-sqlalchemy执行数据库迁移 来更新数据库: 队长试探性的在网上找了几种方案 依然没有解决报错问题: 后来看了https://www.aliyun.com/jiaocheng/4 ...
- 必须会的SQL语句(二) 创建表、修改表结构、删除表
1.创建数据库表 --使用哪个数据库,如果不写这一句是默认的数据库,也可以用鼠标选当前数据库 use testDB --创建表 Create Table tablename ( ...
- MySQL 5.6学习笔记(数据库基本操作,查看和修改表的存储引擎)
1. 数据库基本操作 1.1 查看数据库 查看数据库列表: mysql> show databases; +--------------------+ | Database | +------ ...
随机推荐
- Win10 系统运行VsCode出现白屏的问题(亲测有效)
Win10 系统运行VsCode出现白屏的问题(亲测有效) 新买的本本,昨天VScode运行还正常,今天打开一直白屏,什么都没有,只有几个小格格,也不是卡死的那种,可以轻松关闭, 刚开始以为版本问题, ...
- intellij手动创建Mybatis遇到java.io.IOException: Could not find resource mybatis.xml
将配置文件夹设置成resources即可
- ThinkPhp5 中Volist标签的用法
Volist标签一般是和内置方法assign()搭配使用,将值从后台传到前台,是当下比较流行的一种传值方法 本文实例讲述了ThinkPHP模板循环输出Volist标签用法.分享给大家供大家参考,具体如 ...
- jmeter的使用---用户变量
用户变量有以下方式: 一.外部引入:csv引入参数 二.sample传递参数:http请求的body参数 三.定义用户变量:全局变量 (1)用户定义的变量 name,和value 一对一 (2)用 ...
- Linux中Oracle启动侦听报错TNS:permission denied的解决方法
最近在开发环境 oracle 启动侦听的时候,出现了 TNS:permission denied 的问题,通过网上和咨询朋友,最终找到了解决方案,现在共享出来给有需要的朋友. [oracle@orac ...
- 计算机二级-C语言-程序填空题-190109记录-对二维字符串数组的处理
//给定程序,函数fun的功能是:求出形参ss所指字符串数组中最长字符串的长度,将其余字符串右边用字符*补齐,使其与最长的字符串等长.ss所指字符串数组中共有M个字符串,且串长<N. //重难点 ...
- 加壳&脱壳 - 前言(4.17更新)
0x00 闲谈 最近打算学习学习加壳脱壳相关的知识,大致会有以下几个部分 1.upx壳的加壳原理及脱壳方法 --UPX压缩壳的工作原理 --脱upx壳--初试--单步追踪 -- 0x01 参考链接 1 ...
- laravel执行数据库迁移的过程中出现Illuminate\Database\QueryException : SQLSTATE[HY000] [2002] Operation timed out (SQL: select * from information_schema.tables where table_schema = shop and table_name = migrations
向customers表添加字段phone php artisan make:migration add_phone_to_customers_table 问题: 解决方法: 将DB_HOST配置项修改 ...
- AttributeError: This QueryDict instance is immutable
当写添加注册后端时,运行当运行时,会出现: "AttributeError: This QueryDict instance is immutable": 因为默认的 QueryD ...
- [C++_QT] 同步方式提交GET和POST请求
#开始 最近在做一个需要用到提交HTTP请求的工具 但是遇到一个问题 如下 在Qt中提交一个get请求之后(或者post) 在收到回复之后会调用之前连接好的槽函数 但是问题就是在主调函数中不知道什么时 ...