Database Laravel 5-如何为同一Laravel项目设置多个数据库凭据(如果可能)?
我有一个项目必须通过这两个URL访问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
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;