php - Laravel 动态更改模式
问题描述
我正在使用 laravel 5.8 和 postgres 开发一个项目。我有一个主数据库,一个包含主数据的全局模式和每个组织的其他模式。具有主数据的架构是默认连接。我正在尝试在每个架构中搜索特定的电话号码并返回电话号码出现的所有架构名称。我的第一次尝试是这样,但架构不会从默认架构切换并且搜索不会发生。
我的代码如下所示:
public function authenticate(Request $request)
{
$phone_number = $request->get('phone_number');
$facilities = Facility::all();
foreach($facilities as $facility) {
$params = $facility['schema_name'];
$connection = DatabaseConnection::setConnection($params);
$fac = Patient::where(function ($query) use ($phone_number) {
$query->where('phone_number', '=', $phone_number);
});
$facility = $fac;
}
return response()->json(compact('token', 'connection', 'facility'));
}
我有一个辅助函数,看起来像这样:
public static function setConnection($params)
{
config(['database.connections.onthefly' => [
'driver' => 'pgsql',
'url' => env('DATABASE_URL'),
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '5432'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'prefix' => '',
'prefix_indexes' => true,
'schema' => $params,
'sslmode' => 'prefer',
]]);
return DB::connection('onthefly');
}
DB::statement("SET search_path TO $params");
在尝试不起作用的辅助函数之前,我还尝试使用切换模式。
任何关于如何动态切换模式的建议/参考将不胜感激。
解决方案
推荐阅读
- python - python命令列表的单词
- typescript - 使用通过 `typeof` 间接导出的类型
- c - 我是否曾经担心“没有可用的 shell”来执行系统命令?
- android - 当您拥有 AppCompatActivity 和标准库时,为什么要包含最低 SDK 版本?
- javascript - Ajax 调用和 Chrome 扩展
- python - Mailchimp API 3 添加订阅者不起作用 - 来自 Flask
- c - 在 C 中使用带有指针的结构和数组
- java - Java:如何在 Java Person 类中验证电子邮件
- python - 菜单和子菜单 python
- jquery - 日期时间插件不在数据表中排序