laravel - 使用 Laravel 进行动态数据库连接
问题描述
我正在开发一个必须连接到多个数据库的新应用程序。当新公司在我的应用程序中注册时动态创建数据库,即每个公司都有数据库。
我的问题是如何使用 laravel 建立数据库连接,
如果公司管理员登录,他需要连接相应的数据库。怎么可能???
如果数据库稳定,我知道如何建立多个数据库连接,例如,
'mysql1' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge1'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
...
'mysql2' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge2'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
...
但是如果数据库不稳定怎么可能???
如果我的问题不达标,请见谅
解决方案
首先,您必须知道数据库连接参数的存储位置。无论如何,无论他们在哪里,您都应该即时创建一个新的连接。假设每个用户都有自己的连接......
<?php
use Illuminate\Support\Facades\Config;
$user = Users::find($id);
Config::set('database.connections.' . $user->username, array(
'driver' => 'mysql',
'host' => $user->db_host,
'database' => $user->db_name,
'username' => $user->db_user,
'password' => $user->db_pass,
'charset' => 'utf8',
'collation' => 'utf8_general_ci',
'prefix' => '',
));
// And set the new connection to interested models
$myModel = new MyModel;
$myModel->setConnection($user->username);
$data = $myModel->where(...)->get();
希望这有帮助
推荐阅读
- python - 如何在 Jupyter Notebook 中导入 python .py 文件
- python - 将特征定义保留在字典中并将特征返回给客户端
- java - 使用数组java反转队列
- python - Rest Api Django 中的正确验证
- javascript - 如何在 PixiJS 中按全局坐标缩放图形对象?
- react-admin - 自动计算输入字段
- sql - 执行合并功能 SQL Server 后从存储过程/函数返回表
- arrays - Bash数组中最长的字符串元素对或最长边
- javascript - 如何防止 Angular 在生产模式下删除查询参数?
- google-apps-script - Gmail 脚本 - 添加和删除标签的标签