这可能是一个常见问题,但我已被困2天T_T
非常简单,
我在config / database.php中定义了2 x db连接,如下所示:
'connections' => [
'web' => [
'driver' => 'mysql',
'host' => 'localhost',
'port' => '3306',
'database' => 'db_host1',
'username' => 'username1,
'password' => 'secret1',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
],
'another' => [
'driver' => 'mysql',
'host' => 'localhost',
'port' => '3306',
'database' => 'db_host2',
'username' => 'username2',
'password' => 'secret2',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
],
]
明确而直截了当
php artisan make auth
修改迁移,如下所示:
class CreateUsersTable extends Migration{
//bla....
public function up(){
Schema::connection('another')->create('users', function (Blueprint $table) {
//bla
}
//bla
}
class CreatePasswordResetsTable extends Migration{
//bla....
public function up(){
Schema::connection('another')->create('password_resets', function (Blueprint $table) {
//bla
}
//bla
}
明确而直截了当
php artisan migrate - sweet,db在正确的位置创建
转到registercontroller.php并修改create方法如下:
protected function create(array $data){
return User::create([
'connection' => 'another',
'name' => $data['name'],
'email' => $data['email'],
'password' => bcrypt($data['password']),
]);
}
我还尝试将连接放在app/User.php
中,如下所示:
class User extends Authenticatable{
use Notifiable;
protected $connection = 'another';
测试注册用户 - 填写所有表单字段并提交
SQLSTATE [42S02]:未找到基表或视图:1146表' web.users' 不存在(SQL:从
users
中选择count(*)作为聚合
问题:为什么它仍然会从网络上看到'数据库连接,因为我已告诉使用另一个'数据库连接T_T?
我错过了什么吗?我读过一些像以下的文档:http://fideloper.com/laravel-multiple-database-connections
但它对我没有帮助......
感谢有人在这里帮助我:)
欢呼声,
答案 0 :(得分:0)
方法Schema::connection()
实际上并不存在。执行此操作的理想方法是获取连接的架构构建器:
DB::connection('another')->getSchemaBuilder()->create('users', function (Blueprint $table) {
// definitions
}
实际上有几种方法可以做到这一点,我可以全部介绍它们,但这是最简单的。
答案 1 :(得分:0)
用于验证部分。虽然您在验证部分中将连接更改为另一个,但您仍在寻找Web连接用户表,只需在RegisterController中替换以下代码,您就可以了。
return Validator::make($data, [
'name' => 'required|max:255',
'email' => 'required|email|max:255|unique:another.users',
'password' => 'required|min:6|confirmed',
]);
unique:another.users *这部分非常重要,因为它告诉我们要使用哪个连接以及验证字段的表。
信用:laracast