Laravel从现有数据库逆向生成数据库迁移文件,包括索引和外键!

2024-06-04 21:08

本文主要是介绍Laravel从现有数据库逆向生成数据库迁移文件,包括索引和外键!,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

熟悉laravel的同学都知道,laravel的数据迁移和数据填充,能够随着源代码的改变而同步记录同步数据库结构的变化,也就是对数据库的版本控制。

但是,有的项目开发之初,数据库结构的变化会比较频繁,每个都手动创建migrate文件的,工作量会比较大,或者老项目已有数据库,如果手动为所有的已存在的表去创建迁移文件的会非常耗时,还容易出错。

这里,就给大家分享一下如何逆向生成迁移文件。

本文基于Laravel5.5,其他版本大同小异。

安装

轮子早就有人造好啦,xethron/migrations-generator,只需要composer安装一下

composer require --dev "xethron/migrations-generator"

配置

在 config/app.php中添加相应的服务提供者

// 省略之前内容
'providers'       => [// 省略之前内容Way\Generators\GeneratorsServiceProvider::class,Xethron\MigrationsGenerator\MigrationsGeneratorServiceProvider::class,
],
// 省略之后内容

注册服务,在app/Providers/AppServiceProvider.php中register()方法里添加

// 仅在开发环境中使用
if ($this->app->environment() !== 'production') {$this->app->register(\Way\Generators\GeneratorsServiceProvider::class);$this->app->register(\Xethron\MigrationsGenerator\MigrationsGeneratorServiceProvider::class);
}

生成迁移文件

在项目根目录运行:

php artisan migrate:generate

接下来会让你确认

Using connection: mysqlGenerating migrations for: articles, password_resets, students, students_10000, usersDo you want to log these migrations in the migrations table? [Y/n] :> YNext Batch Number is: 2. We recommend using Batch Number 0 so that it becomes the "first" migration [Default: 0] :> 0Setting up Tables and Index Migrations
Created: F:\techlee\www\laravel55-demo\database/migrations/2018_01_04_050153_create_articles_table.php
Created: F:\techlee\www\laravel55-demo\database/migrations/2018_01_04_050153_create_password_resets_table.php
Created: F:\techlee\www\laravel55-demo\database/migrations/2018_01_04_050153_create_students_table.php
Created: F:\techlee\www\laravel55-demo\database/migrations/2018_01_04_050153_create_students_10000_table.php
Created: F:\techlee\www\laravel55-demo\database/migrations/2018_01_04_050153_create_users_table.phpSetting up Foreign Key MigrationsFinished!

这样就将已有的数据表,批量生成迁移文件啦,可以在database/migrations目录里查看是否生成了迁移文件呢。

后续的开发可以是Migrations维护数据结构了。

你也可以指定某张表生成迁移文件

php artisan migrate:generate table1,table2,table3

也可以反向忽略某些表

php artisan migrate:generate --ignore="table3,table4,table5"

更多用法,请使用help查看

php artisan help migrate:generate

这篇关于Laravel从现有数据库逆向生成数据库迁移文件,包括索引和外键!的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1031127

相关文章

SQL server数据库如何下载和安装

《SQLserver数据库如何下载和安装》本文指导如何下载安装SQLServer2022评估版及SSMS工具,涵盖安装配置、连接字符串设置、C#连接数据库方法和安全注意事项,如混合验证、参数化查... 目录第一步:打开官网下载对应文件第二步:程序安装配置第三部:安装工具SQL Server Manageme

C#连接SQL server数据库命令的基本步骤

《C#连接SQLserver数据库命令的基本步骤》文章讲解了连接SQLServer数据库的步骤,包括引入命名空间、构建连接字符串、使用SqlConnection和SqlCommand执行SQL操作,... 目录建议配合使用:如何下载和安装SQL server数据库-CSDN博客1. 引入必要的命名空间2.

浅谈mysql的not exists走不走索引

《浅谈mysql的notexists走不走索引》在MySQL中,​NOTEXISTS子句是否使用索引取决于子查询中关联字段是否建立了合适的索引,下面就来介绍一下mysql的notexists走不走索... 在mysql中,​NOT EXISTS子句是否使用索引取决于子查询中关联字段是否建立了合适的索引。以下

Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式

《Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式》本文详细介绍如何使用Java通过JDBC连接MySQL数据库,包括下载驱动、配置Eclipse环境、检测数据库连接等关键步骤,... 目录一、下载驱动包二、放jar包三、检测数据库连接JavaJava 如何使用 JDBC 连接 mys

MySQL数据库中ENUM的用法是什么详解

《MySQL数据库中ENUM的用法是什么详解》ENUM是一个字符串对象,用于指定一组预定义的值,并可在创建表时使用,下面:本文主要介绍MySQL数据库中ENUM的用法是什么的相关资料,文中通过代码... 目录mysql 中 ENUM 的用法一、ENUM 的定义与语法二、ENUM 的特点三、ENUM 的用法1

Java中调用数据库存储过程的示例代码

《Java中调用数据库存储过程的示例代码》本文介绍Java通过JDBC调用数据库存储过程的方法,涵盖参数类型、执行步骤及数据库差异,需注意异常处理与资源管理,以优化性能并实现复杂业务逻辑,感兴趣的朋友... 目录一、存储过程概述二、Java调用存储过程的基本javascript步骤三、Java调用存储过程示

Go语言数据库编程GORM 的基本使用详解

《Go语言数据库编程GORM的基本使用详解》GORM是Go语言流行的ORM框架,封装database/sql,支持自动迁移、关联、事务等,提供CRUD、条件查询、钩子函数、日志等功能,简化数据库操作... 目录一、安装与初始化1. 安装 GORM 及数据库驱动2. 建立数据库连接二、定义模型结构体三、自动迁

MySQL之InnoDB存储引擎中的索引用法及说明

《MySQL之InnoDB存储引擎中的索引用法及说明》:本文主要介绍MySQL之InnoDB存储引擎中的索引用法及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录1、背景2、准备3、正篇【1】存储用户记录的数据页【2】存储目录项记录的数据页【3】聚簇索引【4】二

嵌入式数据库SQLite 3配置使用讲解

《嵌入式数据库SQLite3配置使用讲解》本文强调嵌入式项目中SQLite3数据库的重要性,因其零配置、轻量级、跨平台及事务处理特性,可保障数据溯源与责任明确,详细讲解安装配置、基础语法及SQLit... 目录0、惨痛教训1、SQLite3环境配置(1)、下载安装SQLite库(2)、解压下载的文件(3)、

全面解析MySQL索引长度限制问题与解决方案

《全面解析MySQL索引长度限制问题与解决方案》MySQL对索引长度设限是为了保持高效的数据检索性能,这个限制不是MySQL的缺陷,而是数据库设计中的权衡结果,下面我们就来看看如何解决这一问题吧... 目录引言:为什么会有索引键长度问题?一、问题根源深度解析mysql索引长度限制原理实际场景示例二、五大解决