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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,440评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,814评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,427评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,710评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,625评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,014评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,511评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,162评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,311评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,262评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,278评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,989评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,583评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,664评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,904评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,274评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,856评论 2 339

推荐阅读更多精彩内容