2017-01-24 53 views
0

我想知道是否可以在同一连接内更改数据库名称Laravel Eloquent |在同一连接内更改数据库名称

原因是我正在处理一个需要在同一个连接(主机,用户,传递)中遍历所有数据库(超过100个)的报告。

目前我只是在查询中的每个表名之前手动添加数据库名称。像:

"SELECT * FROM `database_a`.`users` WHERE ...";

我做了谷歌搜索一些与“更改数据库名称”或“开关数据库......”,但其中大部分是关于config/database.php创建不同的连接阵列但那不是我的情况(与超过100个数据库)

谢谢

+0

什么样的数据库? – jbrahy

回答

0

由于您只更改数据库名称,请创建一个包含所有数据库名称的数组。然后使用查询生成器,你可以做一个循环

DB::table($databasesArray[0].'.table_name')->where(...) 

我认为这会把你放在正确的轨道。 E.g:

$databases = ['db1','db2']; 

foreach($databases as $db) { 
    $users [] = DB::table($db.'.users')->where('status', 'active')->get(); 
} 
// $users = all users from all Databases 
+0

是的,这是即时通讯做的,但我不认为这是好办法,因为我必须手动建立数据库名称数组。 –

0

如何在表选择中定义数据库?

class Book extends Model { 

    protected $table = 'database1.books' 

} 

class Book2 extends Model { 

    protected $table = 'database2.books' 

} 
+0

即时通讯使用原始查询:(( –