【问题标题】:connect laravel application with database based on the url根据 url 将 laravel 应用程序与数据库连接
【发布时间】:2019-12-26 09:22:58
【问题描述】:

嗨,我正在使用 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);

像这样在刀片内部使用$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 作为公用文件夹并对其他链接project2 project3 等执行相同的操作。 现在当我将文件上传到 cpanel 一切正常,直到它通过加载和卸载加载空白页面将我重定向到登录网址.. 非常感谢这里的任何帮助

【问题讨论】:

  • 请添加您收到的错误信息
  • 问题是我没有收到任何错误消息,只是永远加载页面,并且在 .env 中调试是正确的,但没有错误消息
  • 查看 storage/logs/ 中的错误日志
  • 您是否尝试过清除缓存等
  • 你可能会找到更好的方法使用这个:stackoverflow.com/questions/31847054/…

标签: php laravel laravel-6


【解决方案1】:

我认为另一个问题中的这个答案会对您有所帮助!:https://stackoverflow.com/a/31847198/8219427

如果没有,那么有官方的 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();
});

【讨论】:

  • 请在您的答案中添加一些解释,以便其他人可以从中学习。
猜你喜欢
  • 2012-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-08
  • 1970-01-01
  • 2013-01-10
  • 2018-01-02
相关资源
最近更新 更多