【问题标题】:Eloquent Outside of Laravel with jenssegers/laravel-mongodb multiple DB connections雄辩的 Laravel 外部与 jenssegers/laravel-mongodb 多个数据库连接
【发布时间】:2014-10-09 23:12:07
【问题描述】:

我正在尝试将 Eloquent 连接到多个数据库 sqlserver 作为默认连接,将 mongodb 连接到辅助连接。我正在使用 jenssegers/laravel-mongodb 使用作曲家拉入。这是我的数据库文件

use Illuminate\Database\Capsule\Manager as Capsule;

$capsule = new Capsule;

$capsule->addConnection([
        'driver'   => 'sqlsrv',
        'host'     => '******',
        'database' => '*****',
        'username' => '*****',
        'password' => '*****',
        'prefix'   => '',
    ], 'default');

$capsule->addConnection([
        'driver'   => 'mongodb',
        'host'     => 'localhost',
        'port'     => 27017,
        'username' => '',
        'password' => '',
        'database' => 'production'
], 'mongo');

$capsule->setAsGlobal();
$capsule->bootEloquent();

问题是当我尝试连接到 mongo 数据库时,它会抛出以下错误:

InvalidArgumentException thrown with message "Unsupported driver [mongodb]"

在我看来,Illuminate 连接工厂不支持开箱即用的 mongodb,有人可以指点我正确的方向以使其正常工作吗?

【问题讨论】:

    标签: mongodb laravel laravel-4 jenssegers-mongodb


    【解决方案1】:

    我发现了 evilive 的答案,并且需要一行额外的代码才能将胶囊正确地绑定到 Jenssenger 模型:

    Jenssegers\Mongodb\Model::setConnectionResolver($capsule->getDatabaseManager());
    

    来电

    $capsule->bootEloquent();
    

    将各种连接解析器/数据库管理器绑定到 Eloquent 模型,但似乎没有将它们绑定到 Jessenger 模型。

    【讨论】:

      【解决方案2】:

      你是对的,它没有原生支持。但是很容易添加:

      composer require jenssegers/mongodb:*
      

      然后:

      use Illuminate\Database\Capsule\Manager as Capsule;
      use Jenssegers\Mongodb\Connection as Connection;
      
      $capsule = new Capsule();
      
      $capsule->getDatabaseManager()->extend('mongodb', function($config){
          return new Connection($config);
      });
      

      【讨论】:

        猜你喜欢
        • 2022-01-15
        • 2014-07-01
        • 2018-06-03
        • 2018-02-10
        • 2020-11-16
        • 1970-01-01
        • 1970-01-01
        • 2018-05-17
        • 1970-01-01
        相关资源
        最近更新 更多