我在database.php中如下配置:Laravel 4 equolent - 如何動態更改默認數據庫?
'connections' => array(
'sqlite' => array(
'driver' => 'sqlite',
'database' => __DIR__.'/../database/production.sqlite',
'prefix' => '',
),
'mysql-primary' => array(
'driver' => 'mysql',
'host' => 'host1',
'port' => '3306',
'database' => 'test',
'username' => 'root',
'password' => '',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
'mysql-slave' => array(
'driver' => 'mysql',
'host' => 'host2',
'port' => '3306',
'database' => 'test',
'username' => 'root',
'password' => '',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
'default' => 'mysql-primary',
)
我想什麼來實現從主DB切換到從DB中不可用的情況下比方說,用戶嘗試登錄:
$user = User::where('username', '=', $username)->first();
我想在這裏,如果有PDOException(這是應該在不可用的情況下,拋出)切換默認數據庫並重試操作。我知道它可能在用戶模型中,但我想切換到所有模型。
我都沒有成功嘗試:
App::error(function(PDOException $exception)
{
Log::error("Error connecting to database: ".$exception->getMessage());
DB::setDefaultConnection('mysql-slave');
});
在filters.php
'default' => getDatabase()
function getDatabase()
{
try{
DB::connection('mysql-master')->getDatabaseName();
}catch(PDOException $e){
return 'mysql-slave';
}
return 'mysql-master';
}
在database.php中
兩個不工作。 Laravel 4中有這種行爲嗎?