2

Eloquent を、デフォルトでは複数のデータベース sqlserver に、セカンダリ接続では mongodb に接続しようとしています。私はjenssegers/laravel-mongodbをcomposerを使って引っ張ってきました。ここに私のデータベースファイルがあります

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 をサポートしていないように見えます。

4

2 に答える 2

4

そうです、ネイティブ サポートはありません。しかし、追加するのは簡単です:

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);
});
于 2014-08-20T13:26:27.180 に答える
3

カプセルを Jenssenger モデルに適切に結び付けるには、evilive による回答と追加のコード行が必要であることがわかりました。

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

への呼びかけ

$capsule->bootEloquent();

さまざまな接続リゾルバー/データベースマネージャーをEloquentモデルにバインドしますが、それらをJessengerモデルにバインドしていないようです.

于 2014-10-08T15:08:00.293 に答える