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

相关文章

mysql数据库分区的使用

《mysql数据库分区的使用》MySQL分区技术通过将大表分割成多个较小片段,提高查询性能、管理效率和数据存储效率,本文就来介绍一下mysql数据库分区的使用,感兴趣的可以了解一下... 目录【一】分区的基本概念【1】物理存储与逻辑分割【2】查询性能提升【3】数据管理与维护【4】扩展性与并行处理【二】分区的

MybatisGenerator文件生成不出对应文件的问题

《MybatisGenerator文件生成不出对应文件的问题》本文介绍了使用MybatisGenerator生成文件时遇到的问题及解决方法,主要步骤包括检查目标表是否存在、是否能连接到数据库、配置生成... 目录MyBATisGenerator 文件生成不出对应文件先在项目结构里引入“targetProje

IDEA如何切换数据库版本mysql5或mysql8

《IDEA如何切换数据库版本mysql5或mysql8》本文介绍了如何将IntelliJIDEA从MySQL5切换到MySQL8的详细步骤,包括下载MySQL8、安装、配置、停止旧服务、启动新服务以及... 目录问题描述解决方案第一步第二步第三步第四步第五步总结问题描述最近想开发一个新应用,想使用mysq

Python使用qrcode库实现生成二维码的操作指南

《Python使用qrcode库实现生成二维码的操作指南》二维码是一种广泛使用的二维条码,因其高效的数据存储能力和易于扫描的特点,广泛应用于支付、身份验证、营销推广等领域,Pythonqrcode库是... 目录一、安装 python qrcode 库二、基本使用方法1. 生成简单二维码2. 生成带 Log

Oracle数据库使用 listagg去重删除重复数据的方法汇总

《Oracle数据库使用listagg去重删除重复数据的方法汇总》文章介绍了在Oracle数据库中使用LISTAGG和XMLAGG函数进行字符串聚合并去重的方法,包括去重聚合、使用XML解析和CLO... 目录案例表第一种:使用wm_concat() + distinct去重聚合第二种:使用listagg,

Python使用Pandas库将Excel数据叠加生成新DataFrame的操作指南

《Python使用Pandas库将Excel数据叠加生成新DataFrame的操作指南》在日常数据处理工作中,我们经常需要将不同Excel文档中的数据整合到一个新的DataFrame中,以便进行进一步... 目录一、准备工作二、读取Excel文件三、数据叠加四、处理重复数据(可选)五、保存新DataFram

Java读取InfluxDB数据库的方法详解

《Java读取InfluxDB数据库的方法详解》本文介绍基于Java语言,读取InfluxDB数据库的方法,包括读取InfluxDB的所有数据库,以及指定数据库中的measurement、field、... 首先,创建一个Java项目,用于撰写代码。接下来,配置所需要的依赖;这里我们就选择可用于与Infl

SpringBoot生成和操作PDF的代码详解

《SpringBoot生成和操作PDF的代码详解》本文主要介绍了在SpringBoot项目下,通过代码和操作步骤,详细的介绍了如何操作PDF,希望可以帮助到准备通过JAVA操作PDF的你,项目框架用的... 目录本文简介PDF文件简介代码实现PDF操作基于PDF模板生成,并下载完全基于代码生成,并保存合并P

详谈redis跟数据库的数据同步问题

《详谈redis跟数据库的数据同步问题》文章讨论了在Redis和数据库数据一致性问题上的解决方案,主要比较了先更新Redis缓存再更新数据库和先更新数据库再更新Redis缓存两种方案,文章指出,删除R... 目录一、Redis 数据库数据一致性的解决方案1.1、更新Redis缓存、删除Redis缓存的区别二

oracle数据库索引失效的问题及解决

《oracle数据库索引失效的问题及解决》本文总结了在Oracle数据库中索引失效的一些常见场景,包括使用isnull、isnotnull、!=、、、函数处理、like前置%查询以及范围索引和等值索引... 目录oracle数据库索引失效问题场景环境索引失效情况及验证结论一结论二结论三结论四结论五总结ora