Database Laravel 5-如何为同一Laravel项目设置多个数据库凭据(如果可能)?

Database Laravel 5-如何为同一Laravel项目设置多个数据库凭据(如果可能)?,database,laravel,env,Database,Laravel,Env,我有一个项目必须通过这两个URL访问us_myproject.com和es_myproject.com 它们共享相同的文件夹和代码。事实上,只有一个laravel项目:htdocs/myproject 根据所使用的URL,信息必须来自us\u db或es\u db,具体取决于URL 因此,我的问题是如何设置.envdb凭据以指向这两个不同的数据库。我有两个不同的数据库,两个不同的用户和两个不同的密码。我怎样才能完成这项任务 我有以下有效的代码: URL: us_myproject.com/dbt

我有一个项目必须通过这两个URL访问
us_myproject.com
es_myproject.com

它们共享相同的文件夹和代码。事实上,只有一个laravel项目:
htdocs/myproject

根据所使用的URL,信息必须来自
us\u db
es\u db
,具体取决于URL

因此,我的问题是如何设置
.env
db凭据以指向这两个不同的数据库。我有两个不同的数据库,两个不同的用户和两个不同的密码。我怎样才能完成这项任务

我有以下有效的代码:

URL: us_myproject.com/dbtest


.env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=us_db
DB_USERNAME=root
DB_PASSWORD=''

Route::get('dbtest',function(){//Works good
 $tblusertypes=DB::table("tblusertypes")->get();
 return $tblusertypes;
});

如果我做了
URL:es_myproject.com/dbtest
应该查询
es_db
,但我不知道如何设置它。有什么想法吗?

是的,你可以在Laravel中设置多个数据库,在
connection
array中打开
config/database
mysql
array中设置一个新的数据库,就像在
mysql
array中一样

.env
文件中,您可以检测什么是
默认数据库


调用它:
$result=DB::connection('my_new_database')->table('my_table')->get()

阅读您对另一个答案的评论,我提出了以下解决方案:

  • 打开config/database.php:

  • 很好,我如何在URL和数据库之间建立连接?我的意思是,如果URL是
    es_myproject.com
    我如何设置
    DB::connection('es_myproject')
    us_myproject.com
    设置为
    DB::connection('us_myproject')
    ?我不理解你的问题,问题是我应该在哪里创建URL和数据库之间的关系。我的意思是,如果用户类型
    es_myproject.com
    默认情况下数据库应该是
    es_db
    。如果用户类型为
    us\u myproject.com
    ,则默认情况下数据库应为
    us\u db
    。所以,在某些地方应该有一个if条件,对吗?嗨,我知道你做了什么。因此,您的想法是基于HTTP_主机更改数组内容-凭据。这是一个很好的选择。但它提出了一个问题。这种改变将一直持续到会话结束,我的意思是,让用户访问主页,会话将被设置为一个特定的环境,在本例中是西班牙(es),然后,他转到另一个页面并尝试插入一些sturff。环境已经是静坐的了?我不认为这和会议有任何关系。这只是一个为特定主机使用哪个数据库的问题。当他们随时切换到另一台主机时,凭据将被切换。 <?php return [ ... 'connections' => [ ... 'mysql' => [ 'driver' => 'mysql', 'host' => env('DB_HOST', 'localhost'), 'database' => env('DB_DATABASE', 'forge'), 'username' => env('DB_USERNAME', 'forge'), 'password' => env('DB_PASSWORD', ''), 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', 'strict' => false, ], ... ], ... ]; <?php $config = [ ... 'connections' => [ ... 'mysql' => [ 'driver' => 'mysql', 'host' => env('DB_HOST', 'localhost'), 'database' => env('DB_DATABASE', 'forge'), 'username' => env('DB_USERNAME', 'forge'), 'password' => env('DB_PASSWORD', ''), 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', 'strict' => false, ], ... ], ... ]; if( Request::server('HTTP_HOST') == 'es_myproject.com' ) { $config['connections']['mysql'] = [ 'driver' => 'mysql', 'host' => 'esHOST', 'database' => 'esDB', 'username' => 'esUSER', 'password' => 'esPASSWORD', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', 'strict' => false, ]; } return $config;