欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

Laravel 使用多个数据库的问题。 有大用

Laravel 使用多个数据库的问题。

这几天在使用Laravel 开发一个系统。这个系统连2个数据库。一个名为blog,一个名为center。

center 数据库的作用是作为用户中心。可能会有其他几个系统相连,属于公用数据库。主要是用来用户登录认证。
blog 数据库的作用是放文章,不会牵扯到认证方面。

我的想法是使用center数据库作为用户的登录认证,登录以后在发文章切换到blog数据库。

目前我的
.env
配置如下

DB_HOST=localhost
DB_DATABASE=blog
DB_DATABASE_CENTER=center
DB_USERNAME=root
DB_PASSWORD=root

database.php 里设计如下

'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', 'localhost'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => false,
],
'mysql_center' => [
'driver' => 'mysql',
'host' => env('DB_HOST', 'localhost'),
'database' => env('DB_DATABASE_CENTER', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => false,
],

我自己建立的model
User.php
是可以通过下面这种方式切换数据库的。

class User extends Model implements AuthenticatableContract, CanResetPasswordContract
{
protected $connection = 'mysql_center';

但是系统自带的例子Controller 要怎么切换数据库呢?

app\Http\Controllers\Auth\AuthController.php
app\Http\Controllers\Auth\PasswordController.php

希望大家能帮忙解答一下,谢谢!
数据库是和Model相关的。和Controller没关系吧。改完Model就可以了啊。因为他们都是使用的这个Model吧。
你要是通过Eloquent ORM,那肯定是要通过实例模型,那么就在model里面定义protected $connection就行了,要是不走模型不就只直接用原始的数据库方法吗?引用下文档吧
//获取连接



//若要使用多个连接,可以通过 DB::connection 方法取用:



$users = DB::connection('foo')->select(...);

//你也可以取用原始底层的 PDO 实例:



$pdo = DB::connection()->getPdo();

//有时候你可能需要重新连接到特定的数据库:



DB::reconnect('foo');

//如果你因为超过了底层 PDO 实例的 max_connections 的限制,需要关闭特定的数据库连接,可以通过 disconnect 方法:



DB::disconnect('foo');
来自 http://wenda.golaravel.com/question/1311
普通分类: