iyogesharma / multi-db
v1.0.3
2024-07-01 05:24 UTC
Requires
- php: >=7.0.0
- laravel/framework: >=5.0
README
这个仓库是做什么用的?
-
这个仓库是为了方便创建一个主数据库和多个客户端特定数据库而创建的。
-
它将自动解析使用 YS\MultiDB\Models\Model 类中定义的一些属性定义的 db 连接名称。
-
Model::$cachekey 键用于在缓存中搜索客户端 db 名称。如果设置,将根据此键值从缓存中自动配置数据库连接。如果没有设置,将连接到默认数据库
-
Model::$cronKey 与 $cacheKey 类似,您可以从 cron 作业中设置此键以自动解析数据库连接
-
版本 1.0
如何设置?
- 安装
composer require iyogesharma/multi-db
php artisan vendor:publish --tag=multidb:migrations
php artisan vendor:publish --tag=multidb:models
//optional
php artisan vendor:publish --tag=multidb:config
对于 PgSql
- 而不是默认的 Illuminate\Database\Migrations\Migration,扩展 YS\MultiDB\Migration
- 这个类包含一个静态属性 $schema,它有助于识别运行具有动态模式名称的迁移时的模式名称
例如
```php
<?php
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
use YS\MultiDB\Migration;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create(static::$schema.'.clients', function (Blueprint $table) {
$table->id();
$table->string('code');
$table->string('name');
$table->string('created_by');
$table->string('modified_by')->nullable();
$table->boolean('active')->default(1);
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('clients');
}
};
```
- 在您的模型中,而不是默认的模型类,扩展 YS\MultiDB\Models\Model 类
- 这个类包含一个名为 $inMaindb 的静态属性,默认值为 false。如果您的模型属于主数据库而不是客户端特定数据库,您可以将其设置为 true
protected static $inMainDb = false;
运行特定于客户端数据库/模式的迁移
- 在应用目录中创建一个名为 newdatabase 的目录
- 您可以自定义此目录的名称,只需发布配置并更新键值 new_migrations_path
- 将所有与客户端特定数据库相关的迁移放置在此文件夹中
- 运行
php artisan new:migrations
- 运行
php artisan new:migrations_rollback
以回滚迁移 - 要为客户端特定数据库在 app/newdatabase 文件夹中创建新迁移,请使用
php artisan make:new-migration {迁移名称}
- 为了运行客户端特定数据库的种子,您可以在 app/newdatabase 文件夹中创建种子器目录,并在运行 php artisan new:migrations 命令时使用 --seed 选项,以在此目录中运行种子器
- 要单独运行种子,请运行
php artisan new:seed
- 要在此文件夹中运行特定种子,请运行
php artisan new:seed --path=App\\Newdatabase\\Seeders\\TESTSeeder
查看如何创建新的 DB 或模式
@see src/Controllers/ClientController