我使用DB::setDatabaseName(<database name>)
重设数据库名称,然后使用DB::table(<table name>)->get()
检索数据。但是laravel不会更改为新数据库。
这是我的错误消息:
带有消息'SQLSTATE [42P01]的Illuminate / Database / QueryException: 未定义表:7错误:关系“ t”不存在第1行:选择 * from“ t” ^(SQL:选择* from“ t”)'
table t
在另一个数据库中。我认为当我使用DB::setDatabaseName(<database name>)
时,它会起作用。
谢谢您的帮助!
答案 0 :(得分:0)
我不知道您的详细信息数据库,但这可以帮助您检查数据库是否已更改。
// current database is 'db_1'
echo DB::getDatabaseName(); // return db_1
// Set database to 'db_2'
DB::setDatabaseName('db_2');
// If success, should return 'db_2' now.
echo DB::getDatabaseName();
// Check database tables.
DB::select('show tables');
答案 1 :(得分:0)
我遇到了类似的问题。
但是仅更改数据库可能并不总是可行。
您可以像这样使用 config-> set()
config()->set('database.connections.mysql', $database_name);
但就我而言,我不得不重新连接数据库以动态更改它。
因此,也许这适用于OP。
\DB::disconnect();
config()->set('database.pgsql.database', $database_name); // psgl = Postgress
\DB::reconnect();
您将在Laravel 6 config()->get('database.connections.mysql') not matching DB:connection()
中找到更多信息希望有帮助