californiamountainsnake/laravel-migrations

此包已被弃用且不再维护。未建议替代包。

在Laravel中,使用不同的迁移类处理不同的数据库连接。

2.0.0 2021-04-28 13:58 UTC

This package is auto-updated.

Last update: 2022-05-28 16:36:40 UTC


README

在Laravel中,使用不同的迁移类处理不同的数据库连接。使用这个库,你可以轻松指定每个迁移将在哪个数据库连接上执行。

安装

使用Composer安装此包

通过Composer安装此包。编辑你的项目composer.json文件,以添加californiamountainsnake/laravel-migrations依赖。

{
    "name": "yourproject/yourproject",
    "type": "project",
    "require": {
        "php": "^7.2",
        "californiamountainsnake/laravel-migrations": "*"
    }
}

并运行composer update

或者

在你的命令行中运行此命令

composer require californiamountainsnake/laravel-migrations

用法

  1. config/database.php文件中创建一些连接。
  2. 为每个需要的连接创建一个迁移类
<?php
use CaliforniaMountainSnake\LaravelMigrations\BaseMigration;
use Illuminate\Database\Schema\Builder;
use Illuminate\Support\Facades\Schema;

class DatabaseOneMigration extends BaseMigration {
    /**
     * @return Builder
     */
    public function getDatabaseConnection() : Builder {
         return Schema::connection('your_db_connection_name');
    }
}
  1. 像往常一样通过Artisan创建迁移。
  2. 从你的迁移类之一扩展这个迁移类,而不是使用Illuminate\Database\Migrations\Migration。你也可以使用内置类CaliforniaMountainSnake\LaravelMigrations\DefaultMigration作为默认数据库连接。
  3. 编写你的迁移!
<?php
use Illuminate\Database\Schema\Blueprint;

class CreateUsersTable extends DatabaseOneMigration  {
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up(): void
    {
        $this->getDatabaseConnection()->create('users', static function (Blueprint $table) {
            $table->bigIncrements('id')->unsigned();
            $table->string('email', 256)->unique();
            $table->string('name', 256);
            
            $table->engine    = 'InnoDB';
            $table->charset   = 'utf8mb4';
            $table->collation = 'utf8mb4_unicode_520_ci';
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down(): void
    {
        $this->getDatabaseConnection()->dropIfExists('users');
    }
}