Laravel 9多数据库连接



你好,我在注册新用户时出错。我有两个数据库连接:第一个(默认)oracledb用于获取数据,第二个mysqldb用于用户登录和注册。

所以我在database.php中设置了oracle的默认值(所以我不必每次都使用connection()方法)。

在模型User.php中,我放了这行代码,所以登录指向mysql,我可以登录

protected $connection = 'mysql';

在我尝试注册另一个用户之前,一切都很好——我收到了一个错误,因为注册指向默认的oracledb。我可以通过再次将默认值切换到mysql来避免这个问题,但这不是我需要的方式。

我还缺少什么?如何将注册指向mysqldb?

在数据库中.php'default' => env('DB_CONNECTION_ORA', 'oracle'),

我试图在Schema用户创建时添加连接('mysql'),但它仍然指向默认值。

RegisterController.php

class RegisterController extends Controller

Register Controller

use RegistersUsers;

protected $redirectTo = RouteServiceProvider::HOME;
protected $connection = 'mysql';

public function __construct()
{
$this->middleware('guest');
}
/**
* Get a validator for an incoming registration request.
*
* @param  array  $data
* @return IlluminateContractsValidationValidator
*/
protected function validator(array $data)
{
return Validator::make($data, [
'name' => ['required', 'string', 'max:255'],
'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
'password' => ['required', 'string', 'min:8', 'confirmed'],
]);
}
/**
* Create a new user instance after a valid registration.
*
* @param  array  $data
* @return AppModelsUser
*/
protected function create(array $data)
{
return User::connection('mysql')->create([
'name' => $data['name'],
'email' => $data['email'],
'password' => Hash::make($data['password']),
]);
}

}

我认为您正在使用CREATE方法。试试这个,也许对你有用:

$user = new User;
$user->setConnection('your-another-db');
$user->name = $request->name;
...
...
...
$user->save();

最新更新