让我解释一下这条线的作用:
config(['database.connections.pos.database' => 'mydata']);
它实际上会转到config/database.php 并查找connections 数组并将pos.database 设置为mydata
数组如下所示:
'connections' => [
'sqlite' => [
'driver' => 'sqlite',
'database' => env('DB_DATABASE', database_path('database.sqlite')),
'prefix' => '',
],
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', 'localhost'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => false,
'engine' => null,
],
'pgsql' => [
'driver' => 'pgsql',
'host' => env('DB_HOST', 'localhost'),
'port' => env('DB_PORT', '5432'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'prefix' => '',
'schema' => 'public',
],
],
如您所见,大部分值取自.env 文件。您可以在 .env 中设置它,而不必使用您放置的行进行设置。
我的例子,在这种情况下,假设我使用MySQL,用户名和密码如下:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=freshbook
DB_USERNAME=root
DB_PASSWORD=password
已编辑
所以,如果你需要有两个连接,你实际上可以为两个不同的数据库创建两个控制器。
class MysqlController extends Controller
{
public function __construct() {
config(['database.connections.mysql.database' => 'mydata']);
parent::__construct();
}
public function getSomething() {
}
}
在 routes.php 中
Router::get('/get', function() {
$user = App\User::find(1);
if ($user-id == 1) {
$ctrl = new App\Http\Controllers\MysqlController();
return $ctrl->getSomething();
}
希望你能明白