【发布时间】:2016-05-23 00:01:44
【问题描述】:
我在切换数据库时遇到了问题。 我在 config.database 文件中将数据库“A”设置为默认值;除此之外,我在连接数组中有一个数据库“B”。
'default' => "A",
....
'connections' => [
'A' => [
'driver' => 'mysql',
'host' => env('DB_HOST', 'localhost'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
],
'B' => [
'driver' => 'mysql',
'host' => env('DB_HOST_1', 'localhost'),
'database' => env('DB_DATABASE_1', 'forge'),
'username' => env('DB_USERNAME_1', 'forge'),
'password' => env('DB_PASSWORD_1', ''),
],
.....
当我在控制器中登录并转到 POST 登录方法时,我切换到数据库“B”
\Config::set('database.default', "B");
使用“用户”表并获取登录凭据。
if(\Auth::attempt(array('username'=>$username , 'password'=>$password) ) )...
它工作正常。然而,当我去一个不同的blade.php 我将从位于默认连接 ("A") 上的 "USER" 表而不是位于 B 中的 USER 表中获取凭据
所以当我这样做时
echo Auth::user()->firstName()." - ".Auth::user()->id;
//it will display Carlos - 10 instead of displaying Luis - 10
所以我猜它正在寻找 id=10 但在表 A(默认连接)而不是 B(我使用 Config::set() 切换的那个...
我也尝试将 Config::set('database.default', "B") 放在每个视图上,但它仍然为我提供了表 A 中的凭据 有什么帮助吗? 如何永久更改数据库? 顺便说一句,为什么我必须调用 2 个数据库来获取用户凭据?好吧,因为在我的登录表单上,我输入了公司名称(A 或 B)。
【问题讨论】:
-
你说的新视图也是指新的请求吗?
-
哦,我是说我成功登录的时候
if(\Auth::attempt(array('username'=>$username , 'password'=>$password) ) ) { return view('test'); }
标签: database laravel connection