`

Laravel 5 的 Migrations相关(转)

阅读更多
说明
以前我们团队进行开发,如果数据库结构修改,就要从MySQLWorkbench把整个库或某个表的SQL语句导出来再提交到git, 别人用SQL语句重建某个库或某个表,这样好麻烦。Laravel Migrations就可以避免做这件事。只需要获取到migrations的文件,再migrate就可以了,而且还可以rollback
数据库配置
在.env文件配置数据库环境的信息。
相关的migrate命令
  • 创建migrations表记录相关的动作

    php artisan migrate:install
    
  • 更新数据库信息

    php artisan migrate
    
  • 回滚migrate操作

    php artisan migrate:rollback
    
  • 回滚到所有的migrate操作之前

    php artisan migrate:reset
    
  • 回滚到最开始的时候然后运行所有的mirgrations

    php artisan migrate:refresh
    
  • 查看migration状态

    php artisan migrate:status
    
  • 创建migration文件

    php artisan make:migration
    
    创建的所有文件在 database/migrations目录下
    
    • 查看帮助

      php artisan help make:migration
      
    • 指定创建的migration文件名

      php artisan make:migration create_admins_table
      
    • 创建migration指定创建数据库表名

      php artisan make:migration create_authors_table --create=authors
      
      执行这个命令生成的代码, up 和 down方法自动填充了相关创建表和删除表的代码
      
    • 创建migration指定修改的数据库表名

      php artisan make:migration set_email_to_unique_on_authors_table --table=authors
      执行这个命令生成的代码, up 和 down自带了指定表名的代码
      
migrations文件
所有的migrations文件在database/migrations目录下。

每个migration文件都有两个方法: up & down,up 表示执行migrate时候要执行的操作,down表示回滚up方法所进行的操作。这两个方法需要自行编写。

一般在up方法定义数据表结构, 例如:

public function up()
{
    Schema::create('authors', function (Blueprint $table) {
        $table->increments('id');
        $table->timestamps();
    });
}

直接用$table的相关方法设置数据表结构,相关的方法见Laravel 5的文档migrations节。
migrations文件中表的相关操作
  • 判断表是否存在

    if (Schema::hasTable('users')) {
    
    }
    
  • 指定connection

    Schema::connection('foo')->create('users', function ($table) {
        $table->increments('id');
    });
    
  • 指定数据库引擎

    Schema::create('users', function ($table) {
        $table->engine = 'InnoDB';
    
        $table->increments('id');
    });
    
  • 重命名

    Schema::rename($from, $to);
    
  • 删除表

    Schema::drop('users');
    Schema::dropIfExists('users');
    
migrations文件中列的相关操作
  • 创建列

    Schema::create('authors', function (Blueprint $table) {
        $table->increments('id');
        $table->timestamps();
    });
    
  • 判断列是否存在

    if (Schema::hasColumn('users', 'email')) {
    
    }
    
  • 修改列 -- 使用change方法

    Schema::table('users', function ($table) {
        $table->string('name', 50)->change();
    });
    
  • 重命名列

    Schema::table('users', function ($table) {
        $table->renameColumn('from', 'to');
    });
    
  • 删除列

    Schema::table('users', function ($table) {
        $table->dropColumn('votes');
        $table->dropColumn(['votes', 'avatar', 'location']);
    });
    
migrations文件中索引的相关操作
  • 创建索引

    • 唯一性索引 -- 使用unique方法

      $table->string('email')->unique();
      
    • 复合索引

      $table->index(['account_id', 'created_at']);
      
    • 主键索引

      $table->primary('id');
      $table->primary(['first', 'last']);
      
    • 普通索引

      $table->index('state');
      
  • 删除索引

    必须提定索引的名称,索引的名称: 表名字段名索引类别

    • 删除主键索引

      $table->dropPrimary('users_id_primary');
      
    • 删除唯一索引

      $table->dropUnique('users_email_unique');
      
    • 删除普通索引

      $table->dropIndex('geo_state_index');
      
migrations文件中外键的相关操作
  • 创建外键

    在posts表中创建个user_id字段跟users表的id字段做外键约束

    Schema::table('posts', function ($table) {
        $table->integer('user_id')->unsigned();
    
        $table->foreign('user_id')->references('id')->on('users');
    });
    
  • 删除外建

    外键的名称: 表名_外键字段_foreign
    
    $table->dropForeign('posts_user_id_foreign');
分享到:
评论

相关推荐

    Laravel开发-laravel-migrations-generator

    `laravel-migrations-generator`工具正是为了解决这一问题而设计的,它允许开发者从现有的数据库中自动生成Laravel迁移文件,极大地提高了开发效率。 Laravel的迁移是数据库版本控制的一种方式,通过编写PHP类(即...

    Laravel-Migrations-Organiser, Laravel 4和 5包,帮助组织迁移.zip

    Laravel-Migrations-Organiser, Laravel 4和 5包,帮助组织迁移 Laravel 4和 5迁移管理器 在任何大小的项目中,迁移的数量可以能会很快变大,但是有一个大列表有时会不方便。这里软件包将把你的迁移放在 yyyy/mm ...

    laravel-migrations-generator:Laravel迁移生成器:从现有数据库架构自动生成迁移

    Laravel迁移生成器 从现有数据库生成Laravel迁移,包括索引和外键! V4变更 主要重写FieldGenerator和IndexGenerator 。 修复了其他错误。 添加了spatial数据类型支持,例如geometry , point等。 支持更多...

    Laravel开发-laravel-api-migrations

    `laravel-api-migrations-master`压缩包可能包含了一个示例项目,展示了如何在实际项目中组织和使用API迁移。解压并研究这个项目,可以帮助你更好地理解Laravel API迁移的实践应用。 总结,Laravel的API迁移是构建...

    Laravel开发-laravel-super-migrations

    **Laravel 开发:深入理解 Laravel Super Migrations** 在 Laravel 框架中,Migrations 是一种用于数据库版本控制的强大工具,它允许开发者随着时间的推移来管理数据库结构的变化。然而,随着项目的增长,数据库...

    json-to-laravel-migrations:将JSON模式转换为Laravel迁移

    composer require --dev andyabih/json-to-laravel-migrations 创建JSON模式 在项目的根目录中创建一个schema.json文件,并使用如下所示的模板: { " posts " : { " name " : " string:50|index:50 " , " state...

    Laravel-Migrations-Organiser:Laravel软件包,可帮助组织迁移

    Laravel移民组织者 ...composer require jaybizzle/laravel-migrations-organiser 将以下内容添加到config/app.php文件中的providers数组中。 Jaybizzle \ MigrationsOrganiser \ MigrationsOrganiserServ

    Laravel开发-migrations-generator

    在Laravel框架中,迁移(Migrations)是用于版本控制数据库结构的一种机制,它允许开发者在团队间同步数据库的变化。`Laravel开发-migrations-generator`工具则是为了方便开发者从现有的数据库自动生成对应的Laravel...

    Laravel开发-laravel-batched-migrations

    `laravel-batched-migrations`是一个关于如何在Laravel中实现批处理迁移的概念,它有助于确保迁移操作的唯一性和顺序性,尤其是在多开发环境协作时。让我们深入探讨这个话题。 ### 一、Laravel迁移简介 Laravel的...

    mysql-workbench-export-laravel-5-migrations:一个MySQL Workbench插件,可将模型导出到Laravel 5 Migrations

    MySQL Workbench导出Laravel 5迁移插件 一个MySQL Workbench插件,允许将模型导出到遵循PSR-2编码标准的Laravel 5迁移中。 导出后,将生成每个迁移并将其保存在其自己的,正确命名的迁移文件中。 版 0.1.5 科技类 此...

    Laravel开发-laravel-easy-migrations

    在Laravel框架中,数据库迁移(Migrations)是管理和版本控制数据库结构的一种高效方式。`laravel-easy-migrations`项目则是对Laravel原生迁移功能的扩展,它旨在简化和增强开发过程中的数据表创建和修改流程。下面...

    Laravel开发-migrations-seedings

    让我们深入探讨这两个概念及其在Laravel 5.x中的应用。 一、数据库迁移(Migrations) 数据库迁移是Laravel提供的一种优雅方式来管理数据库结构的演变。它允许开发团队协作,同时保持数据库的一致性。在Laravel中...

    Laravel开发-laravel-5-boilerplate

    "Laravel开发-laravel-5-boilerplate"标题表明我们正在讨论一个针对Laravel 5版本的开发模板或起点项目,这通常是开发者快速启动新项目的基础,包含了一系列预配置的组件和最佳实践。 在Laravel 5中,主要包含了...

    migrations-generator:Laravel Migrations Generator:从现有数据库架构自动生成迁移

    Laravel 5安装推荐的安装方式是通过composer: composer require --dev " xethron/migrations-generator " 在Laravel 5.5中,服务提供商将自动注册。 在旧版本的框架中,编辑config/app.php并将其添加到provider

    Laravel开发-laravel-unbreakable-migrations

    为了解决这个问题,我们关注的是"Laravel-unbreakable-migrations",它提供了一种机制来确保迁移过程要么全部成功,要么完全失败,避免了部分迁移的风险。 在Laravel标准的迁移中,每个迁移通常包含一系列数据库...

    Laravel 5 学习笔记

    - **迁移 (Migrations)**:Laravel 提供了一种简单的方式来管理数据库结构的变化,通过编写迁移脚本可以轻松地创建或修改表结构。 - **Eloquent ORM**: - **模型 (Models)**:Eloquent 是 Laravel 的活跃记录实现...

    Laravel开发-laravel-api-migrations .zip

    在这个"Laravel开发-laravel-api-migrations"的压缩包中,我们很可能会找到与创建RESTful API和管理数据库结构变化相关的资源。 首先,让我们了解一下Laravel API开发。API(Application Programming Interface)是...

Global site tag (gtag.js) - Google Analytics