2014-09-13 2 views
0

Я хочу динамически создавать новую базу данных, пользователя базы данных и пароль с привилегиями, создавать некоторые таблицы в новой базе данных на лету в Laravel 4 для каждого нового пользователя. Это для сайта с несколькими арендаторами.Создайте новую базу данных на лету в Laravel 4

Какое оптимальное решение?

спасибо.

ответ

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(...); 
Смежные вопросы