• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

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

php 搞代码 4年前 (2022-01-22) 11次浏览 已收录 0个评论
文章目录[隐藏]

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

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

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

目前我的.env配置如下

DB_HOST=localhostDB_DATABASE=blogDB_DATABASE_CENTER=centerDB_USERNAME=rootDB_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.phpapp\Http\Controllers\Auth\PasswordController.php

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

回复内容:

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

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

目前我的.env配置如下

DB_HOST=localhostDB_DATABASE=blogDB_DATABASE_CENTER=centerDB_USERNAME=rootDB_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.phpapp\Http\Controllers\Auth\PasswordController.php

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

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

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

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

'table' => 'mydatabases.password_resets',
'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('<i>·本2文来源gaodai$ma#com搞$代*码网2</i><strong>搞gaodaima代码</strong>DB_PASSWORD', ''),只留下 ''               /* 我了解决这个问题,作为一个新手,我耗费了累计时间   两天 */

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Laravel 使用多个数据库的问题。

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址