laravel - 用户登录帐户时如何更改表前缀?
问题描述
我在新的 laravel 中,在我的应用程序中当用户登录他的帐户时,我想更改 env 文件中的默认数据库前缀。我为每个用户设置通配符子域。当每个用户登录时,我想根据子域更改数据库前缀。
那么如果用户登录 Laravel,是否可以全局更改 laravel 前缀?如果有任何解决方案,请建议我。谢谢是提前。
解决方案
当然可以:
配置/数据库.php
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
],
'mysql_earth' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_EARTH_DATABASE', 'earth'),
'username' => env('DB_EARTH_USERNAME', 'earth'),
'password' => env('DB_EARTH_PASSWORD', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
],
'mysql_moon' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_MOON_DATABASE', 'moon'),
'username' => env('DB_MOON_USERNAME', 'moon'),
'password' => env('DB_MOON_PASSWORD', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
],
.env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=forge
DB_USERNAME=forge
DB_PASSWORD=forgepw
DB_EARTH_DATABASE=earth
DB_EARTH_USERNAME=erth
DB_EARTH_PASSWORD=earthpw
DB_MOON_DATABASE=moon
DB_MOON_USERNAME=moon
DB_MOON_PASSWORD=moonpw
在您的控制器示例中使用将您的条件放在连接上,然后您可以在每个数据库中进行查询:
$db = \DB::connection('mysql');
$db = \DB::connection('mysql_earth');
$db = \DB::connection('mysql_moon');
$products = $db->table('products')
->distinct()
->select("*" )
->orderBy('products.id','asc')
->get();
推荐阅读
- mongodb - 是否可以使用自己的属性更新文档?
- flask - 为什么我面临烧瓶邮件问题?
- c# - Visual Studio - 无法在 Nuget 包管理器控制台上运行 dotnet 命令,但在终端中可以
- html - 带有 2 TR 的 DataTable 不显示分页、搜索、排序
- python - 正则表达式,来自代码和测试网站的不同结果
- c++ - 返回数组中值位置的函数(C++,Splashkit)
- sql - “列表表达式引用了既不分组也不聚合的[列标题]。”
- arrays - 将对象的数组推送到数组
- sql-server - Invoke-Sqlcmd 不允许 -E 开关?
- json - 如何使用 JSON 数据定义状态(使用 react 和 axios)