Laravel动态模型数据库

时间:2015-11-15 09:52:43

标签: mysql database laravel model laravel-5

我有一个DB表模型,基本上是一个表但在不同的数据库中, 如何在模型中设置与DB的连接?

protected $connection = 'ls';

以上代码不是我要找的,我需要传递主机,端口,用户名和密码。因为连接存储在DB而不是配置文件中。 我在考虑function __construct(),并打电话给Model($data)::where()..etc

或者我想错误的方式,有人可以给我一个更好的主意。?

1 个答案:

答案 0 :(得分:2)

您可以通过维护以下方面来连接Eloquent模型

首先,您可以在database.php文件

中定义多个连接
<?php
return array(

'default' => 'mysql',

'connections' => array(

    # 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'    => '',
    ),
),
);

您的默认连接仍设为mysql。这意味着,除非我们另行指定,否则应用程序将使用mysql连接。

现在,您可以在模型中指定要使用的连接

<?php

class SomeModel extends Eloquent {

protected $connection = 'mysql2';

 }

您还可以通过setConnection方法在运行时定义连接。

 <?php

 class SomeController extends BaseController {

 public function someMethod()
 {
    $someModel = new SomeModel;

    $someModel->setConnection('mysql2');

    $something = $someModel->find(1);

    return $something;
}

}