(php) 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 => envDB_HOST, localhost, database => envDB_DATABASE, forge, username => envDB_USERNAME, forge, password => envDB_PASSWORD, , charset => utf8, collation => utf8_unicode_ci, prefix => , strict => false, ], mysql_center => [ driver => mysql, host => envDB_HOST, localhost, database => envDB_DATABASE_CENTER, forge, username => envDB_USERNAME, forge, password => envDB_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 要怎么切换数据库呢?

appHttpControllersAuthAuthController.php
appHttpControllersAuthPasswordController.php

希望大家能帮忙解答一下,谢谢!

看看文档: http://laravel.com/docs/master/authentication

AuthController 默认是使用 “AppUser” Eloquent model, 同样的, 你在AppUser里指定某一个数据库就是了

补充一下 laravel 5 自带的 Auth 案例里实现的登录注册和密码找回两个部分。
对于注册登录部分 可以使用ylem的方法。

对于密码找回,需要在/config/auth.php里面进行设置。
例如:

table => mydatabases.password_resets,

host => envDB_HOST, localhost, database => envDB_DATABASE_CENTER, forge, username => envDB_USERNAME, forge, password => envDB_PASSWORD, , charset => utf8, collation => utf8_unicode_ci, ==================写法错误……去掉env , envDB_DATABASE_CENTER, forge只留下forge, envDB_PASSWORD, ,只留下 /* 我了解决这个问题,作为一个新手,我耗费了累计时间 两天 */

在控制器里这样写

 $results = DB::connectionmysql->select...; $results = DB::connectionmysql_center->select...;

发表评论

电子邮件地址不会被公开。 必填项已用*标注