【问题标题】:Laravel Dynamic model databaseLaravel 动态模型数据库
【发布时间】:2016-02-16 13:08:40
【问题描述】:

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

protected $connection = 'ls';

上面的代码不是我要找的,我需要传递主机、端口、用户名和密码。因为连接存储在数据库中而不是配置文件中。 我在想function __construct() 并像Model($data)::where()..etc 一样打电话

或者我想错了,谁能给我一个更好的主意。?

【问题讨论】:

    标签: mysql database laravel model laravel-5


    【解决方案1】:

    您可以通过维护以下方面从 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;
    }
    
    }
    

    【讨论】:

    • 正如我在问题中提到的,我正在寻找其他东西,连接存储在数据库中而不是配置文件中,并且我需要将连接参数(如(主机、用户名、传递)传递给一个模型。
    猜你喜欢
    • 2021-05-21
    • 1970-01-01
    • 2019-09-30
    • 1970-01-01
    • 1970-01-01
    • 2011-10-18
    • 1970-01-01
    • 2016-02-21
    • 2016-07-05
    相关资源
    最近更新 更多