【问题标题】:Create new database on the fly in Laravel 4在 Laravel 4 中动态创建新数据库
【发布时间】:2014-09-13 08:25:07
【问题描述】:

我想动态创建具有权限的新数据库、数据库用户和密码,在 Laravel 4 中为每个新用户动态地在新数据库中创建一些表。这是一个多租户网站。

什么是最好的解决方案?

谢谢。

【问题讨论】:

    标签: php laravel laravel-4 multi-tenant


    【解决方案1】:

    这不是您的第一个数据库连接,这很容易,但您必须执行原始语句,因为数据库创建不能用作连接方法:

    DB::statement(DB::raw('CREATE DATABASE <name>'));
    

    为此,您可以使用辅助连接:

    <?php
    return array(
    
        'default' => 'mysql',
    
        'connections' => array(
    
            'mysql' => array(
                'driver'    => 'mysql',
                'host'      => 'host1',
                'database'  => 'database1',
                'username'  => 'user1',
                'password'  => 'pass1'
            ),
    
            'store' => array(
                'driver'    => 'mysql',
                'host'      => 'host2',
                'database'  => 'database2',
                'username'  => 'user2',
                'password'  => 'pass2'
            ),
        ),
    );
    

    然后您可以在应用程序引导期间更改辅助连接的数据库:

    DB::connection('store')->setDatabaseName($store);
    

    Config::set('database.connections.store', $store);
    

    并在您的查询中使用辅助连接:

    $user = User::on('store')->find(1);
    

    DB::connection('store')->select(...);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-10
      • 2014-05-03
      • 1970-01-01
      • 1970-01-01
      • 2018-11-09
      • 2015-02-28
      • 2018-09-30
      • 2013-03-15
      相关资源
      最近更新 更多