在 CodeIgniter 3 中使用 Illuminate/Database Eloquent ORM 的多个数据库连接
Multiple database connection using Illuminate/Database Eloquent ORM in CodeIgniter 3
我刚刚将 Laravel 的数据库层 Eloquent 添加到我的 CodeIgniter 3 项目中。然而,我的问题是我无法使用 Eloquent 模型连接到多个数据库。
对于默认数据库,这是我配置数据库的方式:
$capsule = new Capsule;
$capsule->addConnection(array(
'driver' => 'mysql',
'host' => "localhost",
'database' => "employees_db",
'username' => "root",
'password' => "",
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
));
$capsule->setAsGlobal();
$capsule->bootEloquent();
以上效果很好。但是我有一个来自另一个数据库的员工table。我可以使用查询生成器来使用它,但在使用 Eloquent 模型时失败了。
我试过这个:
$employees = new Capsule;
$employees->addConnection(array(
'driver' => 'mysql',
'host' => "host2",
'database' => "employees_db",
'username' => "user",
'password' => "pass",
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),'employees');
$employees->setAsGlobal();
尝试设置 Eloquent 模型并使用如下连接:
protected $connection = "employees";
是否可以在 Laravel 之外使用 Illuminate\Database Eloquent ORM 连接到多个数据库?如果是,如何?
Eloquent ORM只需要初始化一次。添加可选的第二个参数作为连接名称。
$capsule = new Capsule;
$capsule->addConnection(
array(
'driver' => 'mysql',
'host' => "localhost",
'database' => "employees_db",
'username' => "root",
'password' => "",
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
"default"
);
$capsule->addConnection(
array(
'driver' => 'mysql',
'host' => "192.168.1.1",
'database' => "employees_db2",
'username' => "user",
'password' => "password",
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
"employees"
);
$capsule->setAsGlobal();
$capsule->bootEloquent();
以上设置完成后,您可以通过编写以下代码在模型文件中指定要连接的数据库:
protected $connection = "employees";
我刚刚将 Laravel 的数据库层 Eloquent 添加到我的 CodeIgniter 3 项目中。然而,我的问题是我无法使用 Eloquent 模型连接到多个数据库。
对于默认数据库,这是我配置数据库的方式:
$capsule = new Capsule;
$capsule->addConnection(array(
'driver' => 'mysql',
'host' => "localhost",
'database' => "employees_db",
'username' => "root",
'password' => "",
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
));
$capsule->setAsGlobal();
$capsule->bootEloquent();
以上效果很好。但是我有一个来自另一个数据库的员工table。我可以使用查询生成器来使用它,但在使用 Eloquent 模型时失败了。
我试过这个:
$employees = new Capsule;
$employees->addConnection(array(
'driver' => 'mysql',
'host' => "host2",
'database' => "employees_db",
'username' => "user",
'password' => "pass",
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),'employees');
$employees->setAsGlobal();
尝试设置 Eloquent 模型并使用如下连接:
protected $connection = "employees";
是否可以在 Laravel 之外使用 Illuminate\Database Eloquent ORM 连接到多个数据库?如果是,如何?
Eloquent ORM只需要初始化一次。添加可选的第二个参数作为连接名称。
$capsule = new Capsule;
$capsule->addConnection(
array(
'driver' => 'mysql',
'host' => "localhost",
'database' => "employees_db",
'username' => "root",
'password' => "",
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
"default"
);
$capsule->addConnection(
array(
'driver' => 'mysql',
'host' => "192.168.1.1",
'database' => "employees_db2",
'username' => "user",
'password' => "password",
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
"employees"
);
$capsule->setAsGlobal();
$capsule->bootEloquent();
以上设置完成后,您可以通过编写以下代码在模型文件中指定要连接的数据库:
protected $connection = "employees";