Храните базы данных в конфиге.
И так, ваш конфиг database.php выглядит примерно так:
<?php
return array(
'default' => 'mysql',
'connections' => array(
'mysql' => array(
'driver' => 'mysql',
'host' => 'host1',
'database' => 'database1',
'username' => 'user1',
'password' => 'pass1'
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
),
);
В connections надо добавлять данные новой БД.
Примерный код хелпера для работы с конфигами (
app/helpers/ConfigHelper.php):
<?php
namespace App\Helpers;
use Illuminate\Config\FileLoader;
class ConfigHelper
{
static public function save($items, $config, $addon = '')
{
$path = base_path()."/config/{$addon}";
$file = "{$path}/{$config}.php";
\File::put($file, '<?php return ' . var_export($items, true) . ';');
}
static public function drop($config, $addon = ''){
$path = base_path()."/config/{$addon}";
$file = "{$path}/{$config}.php";
\File::delete($file);
}
}
Примерный код создания нового соединения:
$database = config('database');
$database['connections']['mysql2'] = array(
'driver' => 'mysql',
'host' => 'host2',
'database' => 'database2',
'username' => 'user2',
'password' => 'pass2'
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
);
\App\Helpers\ConfigHelper::save($database, 'database');
Для работы с новым соединением достаточно прописать в модели параметр connection
<?php
class SomeModel extends Eloquent {
protected $connection = 'mysql2';
}
Либо использовать "горячую" настройку:
$users = DB::connection('mysql2')->select(...);
Schema::connection('mysql2')->create('some_table', function($table)
{
$table->increments('id'):
});
<?php
class SomeController extends BaseController {
public function someMethod()
{
$someModel = new SomeModel;
$someModel->setConnection('mysql2');
$something = $someModel->find(1);
return $something;
}
}
И т.д. по аналогии.