zoukankan      html  css  js  c++  java
  • 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 要怎么切换数据库呢?

    appHttpControllersAuthAuthController.php
    appHttpControllersAuthPasswordController.php
    

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

     

    4个回答

     

    0


    已采纳

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

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

     

    0

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

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

    'table' => 'mydatabases.password_resets',
    
     

    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', ''),只留下 ''
        
        
        
       /* 我了解决这个问题,作为一个新手,我耗费了累计时间   两天 */
     

    0

    在控制器里这样写

     
     $results = DB::connection('mysql')->select('...');
     $results = DB::connection('mysql_center')->select('...');
    
  • 相关阅读:
    Qt学习之路: 国际化(上)
    【Qt】测测你对Qt的了解–Qt工具知多少
    Scade 学习
    SCADESuite嵌入式软件基于模型的开发
    NeHe OpenGL教程 第四十四课:3D光晕
    NeHe OpenGL教程 第四十三课:FreeType库
    NeHe OpenGL教程 第四十二课:多重视口
    NeHe OpenGL教程 第四十一课:体积雾气
    NeHe OpenGL教程 第四十课:绳子的模拟
    78.员工个人信息保镖页面 Extjs 页面
  • 原文地址:https://www.cnblogs.com/caicaizi/p/6220603.html
Copyright © 2011-2022 走看看