laravel 数据迁移

数据迁移是干什么的数据库迁移就像是数据库的版本控制,可以让你的团队轻松修改并共享应用程序的数据库结构。迁移通常与 Laravel 的数据库结构生成器配合使用,让你轻松地构建数据库结构。如果你曾经试过让同事手动在数据库结构中添加字段,那么数据库迁移可以让你不再需要做这样的事情。类似于代码的版本控制工具目的:实现多人协同开发版本控制软件提供完备的版本管理功能,用于存储、追踪目录(文件夹)和文件...
摘要由CSDN通过智能技术生成
数据迁移是干什么的

数据库迁移就像是数据库的版本控制,可以让你的团队轻松修改并共享应用程序的数据库结构。迁移通常与 Laravel 的数据库结构生成器配合使用,让你轻松地构建数据库结构。如果你曾经试过让同事手动在数据库结构中添加字段,那么数据库迁移可以让你不再需要做这样的事情。

类似于代码的版本控制工具

目的:实现多人协同开发

版本控制软件提供完备的版本管理功能,用于存储、追踪目录(文件夹)和文件的修改历史,是软件开发者的必备工具,是软件公司的基础设施。版本控制软件的最高目标,是支持软件公司的配置管理活动,追踪多个版本的开发和维护活动,及时发布软件。

Laravel Schema facade 对所有 Laravel 支持的数据库系统提供了创建和操作数据表的相应支持。
生成迁移

使用 Artisan 命令 make:migration 来创建迁移:

php artisan make:migration create_users_table

新的迁移文件会被放置在 database/migrations 目录中。每个迁移文件的名称都包含了一个时间戳,以便让 Laravel 确认迁移的顺序。

–table 和 --create 选项可用来指定数据表的名称,或是该迁移被执行时是否将创建的新数据表。这些选项需在预生成迁移文件时填入指定的数据表:

php artisan make:migration create_users_table --create=users

php artisan make:migration add_votes_to_users_table --table=users
如果你想为生成的迁移指定一个自定义输出路径,则可以在运行 make:migration 命令时添加 --path 选项。给定的路径必须是相对于应用程序的基本路径。

迁移结构 迁移类通常会包含两个方法:up 和 down。up 方法可为数据库添加新的数据表、字段或索引,而 down 方法则是 up 方法的逆操作。

你可以在这两个方法中使用 Laravel 数据库结构生成器来创建以及修改数据表。若要了解 Schema 生成器中的所有可用方法,可查阅它的文档。以下的迁移实例会创

建一张 flights 数据表:此段摘自官方文档

<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateFlightsTable extends Migration
{
   
    /**
     * 运行数据库迁移
     *
     * @return void
     */
    public function up()
    {
   
        Schema::create('flights', function (Blueprint $table) {
   
            $table->increments('id');
            $table->string('name');
            $table->string('airline');
            $table->timestamps();
        });
    }

    /**
     * 回滚数据库迁移
     *
     * @return void
     */
    public function down()
    {
   
        Schema::drop('flights');
    }
}

运行迁移 使用 Artisan 命令 migrate 来运行所有未完成的迁移:

php artisan migrate

在生产环境强制执行迁移 一些迁移操作是具有破坏性的,这意味着可能会导致数据丢失。为了防止有人在生产环境中运行这些命令,系统会在这些命令被运行之前与你进行确认。如果要强制忽略系统的提示运行命令,则可以使用 --force 标记:

php artisan migrate --force

回滚迁移 若要回滚最后一次迁移,可以使用 rollback 命令。此命令将回滚最后一次「迁移」,其中可能包含多个迁移文件:

php artisan migrate:rollback

在 rollback 命令后加上 step 参数,你可以限制回滚迁移的个数。例如,以下命令将回滚最近五次迁移:

php artisan migrate:rollback --step=5

migrate:reset 命令可以回滚应用程序中的所有迁移:

php artisan migrate:reset

使用单个命令来执行回滚或迁移 migrate:refresh 命令不仅会回滚数据库的所有迁移还会接着运行 migrate 命令。这个命令可以高效地重建整个数据库:

php artisan migrate:refresh

// 刷新数据库结构并执行数据填充

php artisan migrate:refresh --seed

使用 refresh 命令并提供 step 参数来回滚并再执行最后指定的迁移数。例如,以下命令将回滚并重新执行最后五次迁移:

php artisan migrate:refresh --step=5

删除所有表 & 迁移 migrate:fresh 命令会从数据库中删除所有表,然后执行 migrate 命令:

php artisan migrate:fresh

php artisan migrate:fresh --seed

数据表

创建数据表 可以使用 Schema facade 的 create 方法来创建新的数据库表。create 方法接受两个参数:第一个参数为数据表的名称,第二个参数是 闭包,此闭包会接收一个用于定义新数据表的 Blueprint 对象:

Schema::create('users', function (Blueprint $table) {
   
    $table->increments('id');
});

当然,在创建数据表的时候,可以使用任何数据库结构生成器的 字段方法 来定义数据表的字段。

检查数据表或字段是否存在 可以使用 hasTable 和 hasColumn 方法来检查数据表或字段是否存在:

if (Schema::hasTable('users')) {
   
    //
}

if (Schema::hasColumn('users', 'email')) {
   
    //
}

数据库连接 & 表选项 如果要对非默认连接的数据库连接执行结构操作,可以使用 connection 方法:

Schema::connection('foo')->create('users', function (Blueprint $table) {
   
    $table->increments('id');
});

你可以在数据库结构生成器上使用以下命令来定义表的选项:

命令 描述

$table->engine = 'InnoDB';	指定表存储引擎 (MySQL)
$table->charset = 'utf8';	指定数据表的默认字符集 (MySQL)
$table->collation = 'utf8_unicode_ci';	指定数据表默认的排序规则 (MySQL)
$table->temporary();	创建临时表(不支持SQL
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值