播种租户数据库在Laravel 5中

亚纳齐

我正在使用laravel 5中的主数据库和多个租户数据库来构建系统。我使用主数据库进行数据库迁移和主数据库的种子设置没有问题php artisan migrate:refresh --seed

然后,租户在注册时会获得自己的数据库。我需要在租户数据库上运行迁移和种子。

租户迁移文件存储在单独的文件夹中。使用以下命令运行迁移(不幸的是在主数据库上)

\Artisan::call('migrate', [
        '--path'     => "database/migrations_system"
       );

但是,我需要在租户数据库(例如DB_1)上进行迁移。

我阅读以下内容应该可以

\Artisan::call('migrate', [
    '--path'     => "database/migrations_system",
    '--database' => 'db_1'
    ]);

但是我最终会出错

InvalidArgumentException in DatabaseManager.php line 238:

未配置数据库[db_1]。

卡住了。。。如何指定要在特定数据库上运行的迁移?

更新:

我发现更改config/database.php和添加db_1可以使我克服此错误...。

'db_1' => [
            'driver'    => 'mysql',
            'host'      => env('DB_HOST', 'localhost'),
            'database'  => 'db_1',
            'username'  => env('DB_USERNAME', 'root'),
            'password'  => env('DB_PASSWORD', 'pass'),
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
            'strict'    => false,
            'port' => '3306'
        ],

但是,这种连接是未知的,需要即时完成,我也坚持如何完成...。

再次更新并工作解决方案...。动态修改配置...

 $connections = \Config::get('database.connections');
        $tenant_database = 'db_1'; //assign from your main database
        $tenant_connection = [
            'driver'    => 'mysql',
            'host'      => env('DB_HOST', 'localhost'),
            'database'  => $tenant_database ,
            'username'  => env('DB_USERNAME'),
            'password'  => env('DB_PASSWORD'),
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
            'strict'    => false,
            'port' => '3306'
        ];
        $connections['tenant'] = $tenant_connection;
        \Config::set('database.connections', $connections);
       \Artisan::call('migrate', [
        '--path'     => "database/migrations_system",
        '--database' => 'tenant'
        ]);

因此,看来我已经回答了我自己的问题,但是也许有人可以对此程序发表评论。

亚纳齐

我将放下自己的解决方案...。1)创建数据库名称例如,我命名新数据库db_1,其中1代表主数据库中的系统ID。我考虑过在主数据库中存储唯一的加扰名称。最后,这似乎太过分了。

2)创建连接-为此,我使用与新数据库完全相同的名称。

public function createConnection()
{
    $connections = \Config::get('database.connections');

    if(!isset($connections[$this->getSystemName()]))
    {

        $tenant_connection = [
            'driver'    => 'mysql',
            'host'      => env('DB_HOST', 'localhost'),
            'database'  => $this->getSystemName(),
            'username'  => env('DB_USERNAME'),
            'password'  => env('DB_PASSWORD'),
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
            'strict'    => false,
            'port' => '3306'
        ];

        $connections[$this->getSystemName()] = $tenant_connection;

        \Config::set('database.connections', $connections);
        //dd(\Config::get('database.connections'));
    }
}

3)创建数据库,您可以使用主连接来完成

$sql = "CREATE DATABASE " . $this->tenant_name; 
DB::connection('main_db')->statement($sql);

4)运行迁移

$r = \Artisan::call('migrate', [
                '--path'     => "database/migrations_tenant",
                '--database' => $this->tenant_name
            ]);

5)最后,您可以播种测试数据或加载一些默认数据。像这样访问连接

DB::connection($this->system_name)->table($table)->insert($csv);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在laravel中建立一个多租户数据库,其中每个租户都有多个用户?

来自分类Dev

laravel中的数据库中播种时出错

来自分类Dev

ASP.NET MVC 5 + EF6 + Ninject-多租户数据库

来自分类Dev

数据库播种器在Laravel中不起作用

来自分类Dev

数据库播种器在Laravel中不起作用

来自分类Dev

在Laravel中播种数据库时使用进度条

来自分类Dev

在Laravel中播种数据库时找不到表错误

来自分类Dev

Laravel:如何将数据库播种到 db.table 的多个字段中

来自分类Dev

Laravel 4-用户只能访问多用户数据库中的数据

来自分类Dev

Laravel Hyn多租户路由在所有数据库中搜索价值

来自分类Dev

在Laravel中的视图中访问用户数据库信息

来自分类Dev

Laravel 4-根据用户数据库中的值显示不同的视图

来自分类Dev

无法在Rails教程中播种数据库

来自分类Dev

如何在Laravel中具有内存数据库的完整测试套件之前迁移和播种?

来自分类Dev

AWS Neptune数据库中的多租户

来自分类Dev

多租户SQL Server数据库中的复合主键

来自分类Dev

我得到的错误,当我从数据库中laravel通过API获取用户数据

来自分类Dev

Laravel 5.2-如何从具有不同表格式的外部数据库中复制用户数据

来自分类Dev

在Laravel 5+中从数据库中删除列

来自分类Dev

Laravel Cashier - 如何修改收银台以在用户数据库中存储附加参数

来自分类Dev

将用户数据库连接保存在我的数据库中

来自分类Dev

laravel 5中的数据库连接问题

来自分类Dev

Laravel 5在数据库/ Redis中存储会话

来自分类Dev

在Laravel 5中从数据库创建模型

来自分类Dev

如何在Laravel 5中列出数据库连接?

来自分类Dev

在数据库列中存储数组-laravel 5

来自分类Dev

Laravel 5,更改数据库中的值

来自分类Dev

Laravel 5更新数据库中现有的

来自分类Dev

在laravel 5中连接数据库

Related 相关文章

  1. 1

    如何在laravel中建立一个多租户数据库,其中每个租户都有多个用户?

  2. 2

    laravel中的数据库中播种时出错

  3. 3

    ASP.NET MVC 5 + EF6 + Ninject-多租户数据库

  4. 4

    数据库播种器在Laravel中不起作用

  5. 5

    数据库播种器在Laravel中不起作用

  6. 6

    在Laravel中播种数据库时使用进度条

  7. 7

    在Laravel中播种数据库时找不到表错误

  8. 8

    Laravel:如何将数据库播种到 db.table 的多个字段中

  9. 9

    Laravel 4-用户只能访问多用户数据库中的数据

  10. 10

    Laravel Hyn多租户路由在所有数据库中搜索价值

  11. 11

    在Laravel中的视图中访问用户数据库信息

  12. 12

    Laravel 4-根据用户数据库中的值显示不同的视图

  13. 13

    无法在Rails教程中播种数据库

  14. 14

    如何在Laravel中具有内存数据库的完整测试套件之前迁移和播种?

  15. 15

    AWS Neptune数据库中的多租户

  16. 16

    多租户SQL Server数据库中的复合主键

  17. 17

    我得到的错误,当我从数据库中laravel通过API获取用户数据

  18. 18

    Laravel 5.2-如何从具有不同表格式的外部数据库中复制用户数据

  19. 19

    在Laravel 5+中从数据库中删除列

  20. 20

    Laravel Cashier - 如何修改收银台以在用户数据库中存储附加参数

  21. 21

    将用户数据库连接保存在我的数据库中

  22. 22

    laravel 5中的数据库连接问题

  23. 23

    Laravel 5在数据库/ Redis中存储会话

  24. 24

    在Laravel 5中从数据库创建模型

  25. 25

    如何在Laravel 5中列出数据库连接?

  26. 26

    在数据库列中存储数组-laravel 5

  27. 27

    Laravel 5,更改数据库中的值

  28. 28

    Laravel 5更新数据库中现有的

  29. 29

    在laravel 5中连接数据库

热门标签

归档