您的位置:首页 > 编程语言 > PHP开发

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

2016-12-25 21:31 696 查看
这几天在使用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

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

2015年06月23日提问

评论

邀请回答

编辑

更多





4个回答

0

已采纳

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

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

2015年06月23日回答

1
评论

编辑





ylem22 声望

0

补充一下 laravel 5 自带的 Auth 案例里实现的登录注册和密码找回两个部分。

对于注册登录部分 可以使用
ylem
的方法。

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

例如:

'table' => 'mydatabases.password_resets',


2015年06月24日回答

评论

编辑





Me110117 声望

0

'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',

==================写法错误……去掉env ,  env('DB_DATABASE_CENTER', 'forge')只留下'forge',
env('DB_PASSWORD', ''),只留下 ''

/* 我了解决这个问题,作为一个新手,我耗费了累计时间   两天 */


3月21日回答 · 3月21日更新

评论

编辑





clarkwayne1 声望

0

在控制器里这样写

$results = DB::connection('mysql')->select('...');
$results = DB::connection('mysql_center')->select('...');
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: