Я хочу динамически создавать новую базу данных, пользователя базы данных и пароль с привилегиями, создавать некоторые таблицы в новой базе данных на лету в Laravel 4 для каждого нового пользователя. Это для сайта с несколькими арендаторами.
Какое лучшее решение?
Благодарю.
Это не ваше первое подключение к базе данных, это просто, но вам придется выполнять необработанные инструкции, поскольку создание базы данных недоступно в качестве методов подключения:
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(...);