2016-04-22 58 views
0

我有多個數據庫。對於用戶,記錄等我分開用戶數據庫的多個應用程序的原因。Laravel。用戶註冊在其他數據庫中

我的繼承人database.php中

'default' => 'main_db', 

'connections' => [ 
    'auth_db' => [ 
     'driver' => 'sqlsrv', 
     'host'  => env('DB_HOST', 'MYLAPTOP\SQLEXPRESS'), 
     'database' => env('DB_DATABASE', 'auth_db'), 
     'username' => env('DB_USERNAME', 'sa'), 
     'password' => env('DB_PASSWORD', '1234'), 
     'charset' => 'utf8', 
     'prefix' => '', 
    ], 
    'main_db' => [ 
     'driver' => 'sqlsrv', 
     'host'  => env('DB_HOST', 'MYLAPTOP\SQLEXPRESS'), 
     'database' => env('DB_DATABASE', 'main_db'), 
     'username' => env('DB_USERNAME', 'sa'), 
     'password' => env('DB_PASSWORD', '1234'), 
     'charset' => 'utf8', 
     'prefix' => '', 
    ], 
], 

user.php的模型。

class User extends Authenticatable 
{ 

    protected $fillable = [ 
     'name', 'email', 'password', 
    ]; 

    protected $connection = 'auth_db'; 

    protected $hidden = [ 
     'password', 'remember_token', 
    ]; 
} 

AuthController.php,只作了PHP工匠化妝後的幾個變化:AUTH

class AuthController extends Controller 
    { 


    use AuthenticatesAndRegistersUsers, ThrottlesLogins; 


    protected $redirectTo = '/'; 

    protected $username = 'username'; 

    public function __construct() 
    { 
     $this->middleware($this->guestMiddleware(), ['except' => 'logout']); 
    } 


    protected function validator(array $data) 
    { 
     return Validator::make($data, [ 
      'name' => 'required|max:255', 
      'username' => 'required', 
      'email' => 'required|email|max:255|unique:users', 
      'password' => 'required|min:4|confirmed', 
     ]); 
    } 


    protected function create(array $data) 
    { 
     return User::create([ 
      'name' => $data['name'], 
      'username' => $data['username'], 
      'email' => $data['email'], 
      'password' => bcrypt($data['password']), 
     ]); 
    } 
} 

問題是,當我通過/註冊途徑。它會說對象沒有找到「用戶添加新用戶」。因爲用戶表在'auth_db'中,並且它看起來像laravel的註冊仍然指向'main_db',即使$連接已經存在於模型中並且指向用戶表存在的數據庫..

正常查詢,雄辯和登錄功能正在順利..只要這個寄存器被嚇到我了..

+0

U可以包括你在你的問題「用戶註冊」模型和控制器的一部分? – Sunil

+0

@Sunil那裏是...只做了一些改動後,PHP的工匠作出:認證... –

回答

1

試試這個方法一次:

<?php 
return array(

'default' => 'mysql', 

'connections' => array(

    # Our primary database connection 
    'mysql' => array(
     'driver' => 'mysql', 
     'host'  => 'host1', 
     'database' => 'database1', 
     'username' => 'user1', 
     'password' => 'pass1' 
     'charset' => 'utf8', 
     'collation' => 'utf8_unicode_ci', 
     'prefix' => '', 
    ), 

    # Our secondary database connection 
    'mysql2' => array(
     'driver' => 'mysql', 
     'host'  => 'host2', 
     'database' => 'database2', 
     'username' => 'user2', 
     'password' => 'pass2' 
     'charset' => 'utf8', 
     'collation' => 'utf8_unicode_ci', 
     'prefix' => '', 
    ), 
), 
); 

在控制器:

$users = DB::connection('mysql2')->create([ 
     'name' => $data['name'], 
     'username' => $data['username'], 
     'email' => $data['email'], 
     'password' => bcrypt($data['password']), 
    ]); 

Eloquent

您還可以定義哪個連接在您的Eloquent模型中使用!

class SomeModel extends Eloquent { 

protected $connection = 'mysql2'; 

} 

您也可以定義通過setConnection方法在運行時的連接

<?php 

class SomeController extends BaseController { 

public function someMethod() 
{ 
    $someModel = new SomeModel; 

    $someModel->setConnection('mysql2'); 

} 

} 
+0

可能是最好的主意。不使用默認/註冊路線,並使我自己的手動註冊模塊...但謝謝反正..你的答案爲控制器啓發我.. –

+0

好運兄弟:) – Sunil