首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel 4镜像数据库?

Laravel 4镜像数据库?
EN

Stack Overflow用户
提问于 2016-11-08 19:50:43
回答 1查看 179关注 0票数 0

我们已经创建了镜像数据库,它是我们应用程序的主数据库的副本。目标是在不可用的情况下在两个数据库之间跳转。

我想知道如何在Laravel 4中实现这样的东西?比方说我有

代码语言:javascript
复制
 'mysql' => array(
        'driver'    => 'mysql',
        'host'      => '172.22.22.22',
        'port'      => '3306',
        'database'  => 'db',
        'username'  => 'username',
        'password'  => 'password',
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
    ),

代码语言:javascript
复制
'mysql' => array(
        'driver'    => 'mysql',
        'host'      => '172.22.22.23',
        'port'      => '3306',
        'database'  => 'db',
        'username'  => 'username',
        'password'  => 'password',
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
    ),

基本上不同的主机,但相同的凭证。如果其中一个数据库不可用,我如何在这些数据库之间进行配置切换?任何来源或文档都将受到欢迎。

EN

回答 1

Stack Overflow用户

发布于 2017-01-27 18:32:29

您可以编写一个帮助器函数,该函数根据连接与否设置连接。我会这样做:

配置文件:

代码语言:javascript
复制
  # Our primary database connection
    'mysql' => array(
        'driver'    => 'mysql',
        'host'      => 'host1',
        'database'  => 'database1',
        'username'  => 'user1',
        'password'  => 'pass1'
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
    ),

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

Helper函数文件:

代码语言:javascript
复制
function db($modelName){
try {
//Get underlaying PDO connection.
DB::connection()->getPdo();
$m = new $modelName;
$m->setConnection('mysql');
}
catch(\Exception $e)
{
 $m = new $modelName;
$m->setConnection('mysql2');
}
}

然后在每个模型文件中设置如下内容:

代码语言:javascript
复制
protected $connection = HelperClass::db('mymodelname');

我确实假设像这样的某种方法会起作用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40486223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档