Laravel - 如何添加到database.php的新连接

时间:2016-11-08 22:15:16

标签: laravel laravel-5

我需要在laravel中使用几个数据库,并且我正在尝试创建一个表单来向config / database.php中的连接数组添加新的数据库连接。

我不想手动添加连接,而是通过表单添加连接。

'connections' => [

    'sqlite' => [
        'driver' => 'sqlite',
        'database' => env('DB_DATABASE', database_path('database.sqlite')),
        'prefix' => '',
    ],

    'mysql' => [
        'driver' => 'mysql',
        'host' => env('DB_HOST', 'localhost'),
        'port' => env('DB_PORT', '3306'),
        'database' => env('DB_DATABASE', 'forge'),
        'username' => env('DB_USERNAME', 'forge'),
        'password' => env('DB_PASSWORD', ''),
        'charset' => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix' => '',
        'strict' => true,
        'engine' => null,
    ],

    'pgsql' => [
        'driver' => 'pgsql',
        'host' => env('DB_HOST', 'localhost'),
        'port' => env('DB_PORT', '5432'),
        'database' => env('DB_DATABASE', 'forge'),
        'username' => env('DB_USERNAME', 'forge'),
        'password' => env('DB_PASSWORD', ''),
        'charset' => 'utf8',
        'prefix' => '',
        'schema' => 'public',
        'sslmode' => 'prefer',
    ],

],

由于

2 个答案:

答案 0 :(得分:2)

您可以根据需要向阵列添加任意数量的数据库,然后将连接值添加到.env文件或添加到数组valy中,如下所示:

return array(

'default' => 'my_first_db',

'connections' => array(

    # Our primary database connection
    'my_first_db' => array(
        'driver'    => 'mysql',
        'host'      => 'host1',
        'database'  => 'database1',
        'username'  => 'user1',
        'password'  => 'pass1'
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
    ),

    # Our secondary database connection
    'my_second_db' => array(
        'driver'    => 'mysql',
        'host'      => 'host2',
        'database'  => 'database2',
        'username'  => 'user2',
        'password'  => 'pass2'
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
    ),
),

);

Schema::connection('my_second_db')->create('a_new_table', function($table)
{
    $table->increments('id'):
});

$users = DB::connection('my_second_db')->select('users');

要通过表单添加连接,您需要将数据发布到类似于上面的模板,然后写入服务器,这样做有点安全风险,需要小心处理以及如何进行操作,在请求中发布数据库数据,然后将数据库数据保存到文件中有点过分。

您可以设置一个配置文件,其中包含预先定义了PDO的10个数据库,然后您可以覆盖设置或保存到其中一个未分配设置的配置文件。

答案 1 :(得分:1)

您可以使用配置助手并动态设置配置:

config([
    'database.connections.mysql.database' => $dynamicDB,
    'database.connections.mysql.username' => $dbUsername,
    'database.connections.mysql.password' => $dbPassword,
    // Any other dynamically set variables
]);

您可以将参数存储在会话中,并将其默认为配置文件:

config([
    'database.connections.mysql.database' => session('db_database', config('database.connections.mysql.database')),
    'database.connections.mysql.username' => session('db_username', config('database.connections.mysql.username')),
    'database.connections.mysql.password' => session('db_password', config('database.connections.mysql.password')),
    // Any other dynamically set variables
]);

在中间件中执行此操作可以让您更好地控制这些参数的设置和使用位置/时间。