laravel迁移文件的命令

Laravel鼓励敏捷、迭代的开发方式,我们没指望在第一次就获得所有正确的。
我们对于自己编写代码,可以通过迁移文件,不断的重复去测试.
对于工作,我们开发一个完整的项目,是需要我们每个人相互配合,就好比用svn,git版本控制工具来存储应用程序的源代码文件,使我们能够撤消错误和追踪开发过程中的改变。

但应用程序更改时,存在我们不能单独使用版本控制进行有效管理的区域。在我们如果使用laravel框架开发项目,这个过程中,Laravel应用程序的数据库架构不断演变:如我们在这里添加了一个表,在那里重命名列,删除索引等等,然后出现错误我们可以直接找到哪里出的错,是谁操作的,便于直接解决问题和团队开发.

当你需要一个复杂的方法来跟踪您的数据库架构更改,通常有几种方法:

1.当您在开发团队内工作时,每人都需要知道关于任何架构的更改。
2.当你在生产服务器上部署时,您需要有稳健的方式来升级您的数据库架构。
3.如果您在多台机器上工作,你需要保持所有数据库架构的同步。

如果没有严格的约定和纪律让应用程序开发者遵循,保持数据库架构与应用程序代码同步历来是一个非常麻烦的工作。开发者(或数据库管理员) 进行所需的架构更改。但是,如果应用程序代码回滚到以前的版本,但是很难撤消数据库架构更改,照成数据库版本信息与应用程序代码版本信息不一致。

迁移就是帮助你进化你的代码数据,它不需要你在每次改变的时候delete或者alert数据库。没有删除和重建就意味着你不会在每次改变的时候丢失数据。当你执行迁移时唯一的改变就是将数据库架构从一个版本移到另一个版本,不管是向前还是向后移,相对于svn这样的。

Laravel迁移给你提供了一种在迭代方式中修改数据库架构的手段,它不需要你用SQL操作,而是直接使用封装好的类。Laravel架构生成器允许我们快速创建数据库表和插入列或索引。它使用清洁和富有表现力的语法来操作数据库。你也许为认为Laravel迁移就是数据库的版本控制。

通过定义一个更高级别的接口来创建和维护数据库架构,你可以用与数据库无关的方式定义它。通过使用 PHP 来创建表,定义列和索引,写一次架构并将其应用到任何所支持的数据库后端。

以上参考Database Migration using Laravel和自己的理解.

laravel 迁移文件基础

laravel迁移文件是定义在laravel框架项目根目录下database/migrations下,在这里可以进行表的创建,列的添加和删除,版本的回退功能,直接用命令去操作,把迁移文件直接保存到目录中方便操作,就好比把php代码直接保存.但是在laravel中的迁移命令都是依靠Artisan工具去执行的.

laravel迁移文件的生成

一个非常见简单的命令,但是我们需要使用laravel的artisan工具,同样的也需要配置好我们的php环境,能够在命令行中去执行,首先下面的是创建表的迁移文件
php artian make:migration create_table_goods --create=goods

qian.png

这个命令呢是创建一个叫做goods表的迁移文件,在命令行中去执行,成功之后,来到database/migration目录中:

wen.png

那么在up方法中可以执行添加列的语句如:

public function up() { Schema::create('goods', function (Blueprint $table) { $table->increments('id'); $table->string('email');//添加email字段 $tbale->integer('mobile');//添加moble字段 $table->timestamps(); }); } 

那么怎么生成呢 php artisan migrate //执行所有的迁移文件的命令
在项目根目录执行这个命令,成功,去查看自己的数据库,多出一个goods表

假如我做项目,做到一半发现这个表中,缺少一个那么的字段,那怎么办呢,手动去数据库中添加么,不用的?我们还可以用迁移文件去完成
php artisan make:migration add_name_to_goods --table=goods

add1.png

在命令行中去执行成功之后来到迁移文件目录下

add2.png

    public function up() { Schema::table('goods', function (Blueprint $table) { $table->string('name');//添加name字段 }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::table('goods', function (Blueprint $table) { $table->dropColumn('name');//删除字段以便于后期修改错误一定要写 }); 

再次执行迁移文件,发现goods表中多出一个name字段,说明我们添加成功
那么我们在看一下artisan其他的命令

   migrate:install在内部,Laravel使用特殊的表来跟踪哪些迁移已经运行。若要创建此表,只需要用artisan命令行工具:php artisan migrate:installmigrate你将会运行migrate任务频繁的更新你的数据库,以支持你添加到应用程序中的最新的表和列。最基本的形式,它只会对那些所有没有被运行过的迁移运行up()方法。migrate:rollback在写迁移时偶尔也会犯错误。如果你已经运行了迁移,那么你不能只是编辑迁移和再次运行迁移:Laravel假定它已经运行了迁移,那么当你再次运行artisan migrate,不会做任何事情。你必须使用artisan migrate:rollback回滚迁移,然后编辑迁移,再运行artisan migrate去运行正确的版本。migrate:reset回滚所有的迁移(会删掉所有表和数据)migrate:refreshartisan migrate:refresh任务将删除数据库、 重新创建它并将加载当前架构。这是一个方便快方式去运行重置并随后重新运行所有迁移。migrate:makeartisan migrate:make命令告诉 Laravel 来生成一个迁移文件骨架 (这是实际上是一个 PHP文件) ,存放到app/database/migrations文件夹中。然后,您可以编辑此文件来充实您的表/索引定义。然后,artisan migrate命令运行时,artisan会查询此文件来生成 SQL DDL 的实际代码。php artisan migrate --force: 强制执行最新的迁移文件

这就是laravel 迁移文件的强大之处,方便我们团队去开发,省略不必要的麻烦

转载于:https://www.cnblogs.com/qaing123/p/9510539.html

laravel迁移文件相关推荐

  1. 关于laravel 框架运行数据库迁移文件的一个小坑以及常用php artisan命令

    小白我因为最近开发的一系列项目都是用的laravel框架,所以为了方便有时候就会直接复制一份代码以此作为新项目的基础.可能因为"因为夜路走多了,所以掉坑里了">>> ...

  2. laravel手动误删了迁移文件,重新生成

    include(D:\UPUPW_AP5.6\htdocs\laravel\jiuxiangzu\vendor\composer/../../database/migrations/2019_03_0 ...

  3. Laravel框架-迁移文件

    Laravel框架-迁移文件 它是什么: 它是保存在迁移文件目录database\migrations\中的文件,并且这些文件中的类都继承迁移类Illuminate\Database\Migratio ...

  4. 【laravel5.4】迁移文件的生成、修改、删除

    建议直接去官方文档查看: https://laravel-china.org/docs/laravel/5.4/migrations#creating-columns 1.生成迁移: 主要方式:1.创 ...

  5. laravel 项目迁移_在Laravel迁移

    laravel 项目迁移 Before moving forward we need to know some facts about it, 在继续前进之前,我们需要了解一些事实, Resource ...

  6. yii 执行指定迁移文件_laravel的迁移文件

    1. 迁移是什么? 迁移就像是对数据库进行的版本控制,让你的团队能够轻松地去定义和共享程序的数据库结构.迁移通常配合 Laravel 的结构生成器,可以轻松生成应用程序的数据库结构.如果团队中有个成员 ...

  7. 3分钟短文:一看就是干货!Laravel迁移数据库!

    引言 书接上回.我们讲完了路由,又顺带讲了中间件:接着又讲了控制器,还把路由的数据发到控制器,并且渲染到视图页面.更深入的是,把视图文件的模板也说明白了. MVC - CVM - VMC,到底缺了哪一 ...

  8. java迁移文件下的文件_Laravel迁移 - 一次性多次迁移(文件)

    说,我有多个迁移文件更新单个表 . 例如 2016_03_20_072730_create_tasks_table.php 2016_03_20_075467_create_tasks_table.p ...

  9. .gitignore文件_Django项目.gitignore文件建议忽略文件清单及是否需要忽略数据库迁移文件...

    Django项目开发或改动完成后将本地代码提交到代码库(比如github)时,我们需要考虑哪些文件需要提交,哪些不需要提交.这是因为有些库文件(比如缓存文件),本地日志文件还有一些编译文件是不必要提交 ...

最新文章

  1. scroll事件实现监控滚动条并分页显示示例(zepto.js)
  2. python项目开发实战-给缺少Python项目实战经验的人
  3. oracle数据泵导入提示00972,oracle数据库使用expdp指定FLASHBACK_TIME遇到ORA-39150错误 | 信春哥,系统稳,闭眼上线不回滚!...
  4. mysql三台机群集_MySQL Cluster 3台机器搭建集群环境
  5. linux内核申请内存的方法,Linux内核空间的内存申请常用函数
  6. 又翻出来老电视剧看了看....
  7. MVC如何添加Model
  8. python开发技术文档范文_程序员编写技术文档的新手指南
  9. 吐槽安卓系统体验差用户 这次啪啪啪打脸了
  10. 奇偶数判断(信息学奥赛一本通-T1041)
  11. ORA-00376: file X cannot be read at this time 问题解决
  12. nginx: 编写简单handler模块
  13. word 多级列表标题设置
  14. 谈如何归纳和分类美术风格比较合理
  15. ios安装app提示【未受信任的企业级开发者】。在设置中信任此开发者
  16. Flask框架学习:蓝图的使用
  17. python pyecharts 数据可视化 饼状图绘制
  18. HEG安装及hdf文件转tif文件批处理
  19. 数据库 约束(Constraint)、多表关系和范式
  20. 【JVM】三色标记法

热门文章

  1. 太监式的自主知识产权研发特色 (Z)
  2. 使用composer_在Google Cloud Composer(Airflow)上使用Selenium搜寻网页
  3. Android应用程序开发环境的建立
  4. 转载:Windows CE内存管理
  5. python获取屏幕文字_详解:四种方法教你对Python获取屏幕截图(PyQt , pyautogui)...
  6. python中缩进_python编程中的缩进是什么意思
  7. sqlserver 查询中文查询不到 查询英文可以查到_估值数据和财报数据查询方法
  8. 禅道项目管理_禅道 11.6.1 版本发布,完善细节,修复 Bug
  9. oracle 日期6,EF 6与Oracle - 如何加入日期字段?
  10. 回溯法基本思想_LeetCode--回溯法心得