我在Laravel项目中使用了两个数据库连接。
我需要修改两个数据库中的表。
我已经设置了所有内容,现在我正在玩耍并尝试从第一个数据库和第二个数据库中获取数据,但是文档几乎没有提供有关这样做的信息,我只是发现了这一点:
$users = DB::connection('foo')->select(...);
某处是否有更多资源?我什么都找不到。
到目前为止,我了解如果我使用多个数据库,我不再雄辩了吗?至少我不能对第二个数据库使用雄辩的语言,这不是默认值。
为了进行测试,我在两个数据库上使用不同的数据创建了相同的表。但我无法查询数据,总是会收到此错误:
Undefined property: Illuminate\Database\MySqlConnection::$User
这是我的测试:
$users1 = DB::connection('mysql_live')->select('SELECT * FROM users');
info($users1);
$users2 = DB::connection('mysql')->User::all();
info($users2);
我也尝试过:
$users1 = DB::connection('mysql_live')->User::all();
最好是有关如何正确使用DB::connection
以及实际选择,编辑,插入数据等的文档。
编辑
答案 0 :(得分:4)
$users1 = DB::connection('mysql_live')->table('users')->get()->toArray();
对于第二个查询,您可以执行相同的操作。没有理由为此使用雄辩的模型。但是,如果您愿意,那么:
在用户模型内,您必须定义连接
protected $connection = 'mysql'; //which is the default as well
此外,您还必须定义要检索的字段,例如:
protected $fillable = ['email','username'];
真正重要的是隐藏诸如密码等之类的敏感字段。您可以在其中使用另一个数组:
protected $hidden = ['password'];
然后您可以使用雄辩的语言:
$users = User::get();
答案 1 :(得分:2)
这可以通过setConnection
方法
$someModel = new SomeModel;
$someModel->setConnection('foo');
$something = $someModel->find(1);
return $something;
答案 2 :(得分:0)
尝试此代码,
首先,您需要设置config
Config::set('database.connections.mysql_live.database', 'dbname');
Config::set('database.connections.mysql_live.host','localhost');
然后
$result=DB::connection('mysql_live')->table('users')->get();