Laravel多数据库

时间:2018-01-08 00:35:01

标签: php laravel laravel-5 laravel-5.5

我正在尝试使用多个数据库进行laravel使用:

  • Laravel版本:5.5.28
  • Php Version 7.2.0
  • 数据库驱动程序&版本:MariaDB 10.1.29

定义连接:

return array(

    'default' => 'mysql',

    'connections' => array(

        # Primary/Default database connection
        'mysql' => array(
            'driver'    => 'mysql',
            'host'      => 'localhost',
            'database'  => 'bdd1',
            'username'  => 'root',
            'password'  => ''
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
        ),

        # Secondary database connection
        'mysql2' => array(
            'driver'    => 'mysql',
            'host'      => 'localhost',
            'database'  => 'bdd2',
            'username'  => 'root',
            'password'  => ''
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
        ),
    ),
);

定义模型:

class Products extends Model {

    protected $connection = 'mysql';

}

定义控制器:

class ProductController extends BaseController {

    public function find()
    {
        $productModel= new Products;

        $productModel->setConnection('mysql2');

        $product= $productModel->find(1);

        return $product;
    }

}

上面的代码没有错误,但是如果我在控制器中更改连接的名称,它将继续使用.env文件中配置的内容

拜托,有人可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:2)

您可以配置: $("#titlecontent").addClass( "start" );

.env

DB_CONNECTION=mysql DB_HOST=localhost DB_PORT=3306 DB_DATABASE=bdd1 DB_USERNAME=root DB_PASSWORD= DB_CONNECTION_SECOND=mysql2 DB_HOST_SECOND=localhost DB_PORT_SECOND=3306 DB_DATABASE_SECOND=bdd2 DB_USERNAME_SECOND=root DB_PASSWORD_SECOND=

config/database.php
祝你好运!

答案 1 :(得分:0)

有两种方法可以实现这一点,一旦你动态更改了连接,就必须传播你可以这样做的连接。

if ($this->propogateConnection) {
    $instance->setConnection($this->getConnectionName());
 }

另一件事是你可以使用Model::on('connection_name',true),而true则用于传播连接。

希望这有帮助。