基于 url 将 laravel 应用程序连接到数据库
connect laravel application with database based on the url
嗨,我正在使用 laravel 6 项目
我想将我的应用程序连接到基于 url 的数据库,就像这个架构
www.mywebsite.com/project1
www.mywebsite.com/project2
www.mywebsite.com/project3
www.mywebsite.com/project4
我做了这个步骤
在我的 config/config.php
<?php
return
[
'application_path' => explode('/',$_SERVER['REQUEST_URI'])[1],
];
我编写此代码是为了在控制器中使用 $application_path
,就像此代码
$file->move(public_path().'/companys/'.config('global.application_path')
在我的 AppServiceProvider.php 中我做了这个代码
$url = $_SERVER['REQUEST_URI'];
$url = explode('/',$url);
$urls = $url[1];
View::share('application_path', $urls);
像这样在 blade 中使用 $application_path
href='{{ asset("/companys/".$application_path."/uploads/archives/$request->user_id/$file_name.$ex")}}'
在我的 config/database.php 中我做了这个代码
$url = $_SERVER['REQUEST_URI'];
$url = explode('/',$url);
$database = 'mycpanelusername_'.$url[1];
$username = 'myusername';
$password = 'mypassword';
'mysql' => [
'driver' => 'mysql',
'url' => env('DATABASE_URL'),
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => $database,
'username' => $username,
'password' => $password,
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'prefix_indexes' => true,
'strict' => true,
'engine' => null,
'options' => extension_loaded('pdo_mysql') ? array_filter([
PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
]) : [],
],
我有一个名为
的数据库
project1 project2 project3
所以我尝试的是当我访问 www.mywebsite.com/project1
时将我连接到数据库 project1
并将文件夹 companys/project1
用作 public 文件夹并对其他文件夹执行相同的操作链接 project2 project3 等 ..
现在,当我将文件上传到 cpanel 时
一切正常,直到它通过加载和卸载加载空白页面将我重定向到登录 url ..
非常感谢这里的任何帮助
我认为另一个问题中的这个答案会对您有所帮助!:
如果没有,则有官方 Laravel 文档。: https://laravel.com/docs/database#using-multiple-database-connections
Ps.: 使用框架提供的选项,例如从请求对象中获取 uri! https://laravel.com/docs/requests 示例:
use Illuminate\Http\Request;
Route::get('/', function (Request $request) {
$uri = $request->path();
});
嗨,我正在使用 laravel 6 项目 我想将我的应用程序连接到基于 url 的数据库,就像这个架构
www.mywebsite.com/project1
www.mywebsite.com/project2
www.mywebsite.com/project3
www.mywebsite.com/project4
我做了这个步骤 在我的 config/config.php
<?php
return
[
'application_path' => explode('/',$_SERVER['REQUEST_URI'])[1],
];
我编写此代码是为了在控制器中使用 $application_path
,就像此代码
$file->move(public_path().'/companys/'.config('global.application_path')
在我的 AppServiceProvider.php 中我做了这个代码
$url = $_SERVER['REQUEST_URI'];
$url = explode('/',$url);
$urls = $url[1];
View::share('application_path', $urls);
像这样在 blade 中使用 $application_path
href='{{ asset("/companys/".$application_path."/uploads/archives/$request->user_id/$file_name.$ex")}}'
在我的 config/database.php 中我做了这个代码
$url = $_SERVER['REQUEST_URI'];
$url = explode('/',$url);
$database = 'mycpanelusername_'.$url[1];
$username = 'myusername';
$password = 'mypassword';
'mysql' => [
'driver' => 'mysql',
'url' => env('DATABASE_URL'),
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => $database,
'username' => $username,
'password' => $password,
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'prefix_indexes' => true,
'strict' => true,
'engine' => null,
'options' => extension_loaded('pdo_mysql') ? array_filter([
PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
]) : [],
],
我有一个名为
的数据库project1 project2 project3
所以我尝试的是当我访问 www.mywebsite.com/project1
时将我连接到数据库 project1
并将文件夹 companys/project1
用作 public 文件夹并对其他文件夹执行相同的操作链接 project2 project3 等 ..
现在,当我将文件上传到 cpanel 时
一切正常,直到它通过加载和卸载加载空白页面将我重定向到登录 url ..
非常感谢这里的任何帮助
我认为另一个问题中的这个答案会对您有所帮助!:
如果没有,则有官方 Laravel 文档。: https://laravel.com/docs/database#using-multiple-database-connections
Ps.: 使用框架提供的选项,例如从请求对象中获取 uri! https://laravel.com/docs/requests 示例:
use Illuminate\Http\Request;
Route::get('/', function (Request $request) {
$uri = $request->path();
});