Laravel 使用多個資料庫的問題。

來源:互聯網
上載者:User
這幾天在使用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('DB_PASSWORD', ''),只留下 ''               /* 我瞭解決這個問題,作為一個新手,我耗費了累計時間   兩天 */
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.