在Laravel 4中即时创建新数据库

时间:2014-09-13 08:25:07

标签: php laravel laravel-4 multi-tenant

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

什么是最好的解决方案?

感谢。

1 个答案:

答案 0 :(得分: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(...);