如何使用Laravel DB :: setDatabaseName?

时间:2018-12-25 03:34:56

标签: database laravel

我使用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>)时,它会起作用。

谢谢您的帮助!

2 个答案:

答案 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()

中找到更多信息

希望有帮助