Dynami c База данных CodeIgniter 4 - PullRequest
0 голосов
/ 04 мая 2020

Чтобы уточнить, я хотел бы динамически загружать базы данных на основе моего зашифрованного сеанса.

Когда я использовал ci3, я использовал так:

$ci =& get_instance();

, а затем

$ci->session->userdata('database');

Rigth теперь у меня есть:

public $default = [
        'DSN'      => '',
        'hostname' => 'localhost',
        'username' => 'root',
        'password' => '',
        'database' => '', // I WOULD LIKE TO CHANGE THIS DYNAMICALLY BUT IN CI4 I DON'T KNOW HOW TO DO. LIKE: $THIS->SESSION->GET('database');
        'DBDriver' => 'MySQLi',
        'DBPrefix' => '',
        'pConnect' => false,
        'DBDebug'  => (ENVIRONMENT !== 'production'),
        'cacheOn'  => false,
        'cacheDir' => '',
        'charset'  => 'utf8',
        'DBCollat' => 'utf8_general_ci',
        'swapPre'  => '',
        'encrypt'  => false,
        'compress' => false,
        'strictOn' => false,
        'failover' => [],
        'port'     => 3306,
    ];

Но теперь с ci4 я не знаю, как это сделать. Кто-нибудь может мне помочь? :) Когда я пытаюсь изменить динамически, мы получили эту ошибку: Неустранимая ошибка: выражение константы содержит недопустимые операции в

Это конструктор класса:

public function __construct()
    {       parent::__construct();
        // Ensure that we always set the database group to 'tests' if
        // we are currently running an automated test suite, so that
        // we don't overwrite live data on accident.

        $session = $session = \Config\Services::session();
        $dbsession = $session->get('company');
        if (ENVIRONMENT === 'testing')
        {
            $this->defaultGroup = 'tests';

            // Under Travis-CI, we can set an ENV var named 'DB_GROUP'
            // so that we can test against multiple databases.
            if ($group = getenv('DB'))
            {
                if (is_file(TESTPATH . 'travis/Database.php'))
                {
                    require TESTPATH . 'travis/Database.php';

                    if (! empty($dbconfig) && array_key_exists($group, $dbconfig))
                    {
                        $this->tests = $dbconfig[$group];
                    }
                }
            }
        }
    }

И ниже у нас есть все код:

<?php namespace Config;

/**
 * Database Configuration
 *
 * @package Config
 */

class Database extends \CodeIgniter\Database\Config
{

        //--------------------------------------------------------------------
    public function __construct()
    {       parent::__construct();
        // Ensure that we always set the database group to 'tests' if
        // we are currently running an automated test suite, so that
        // we don't overwrite live data on accident.

        $session = $session = \Config\Services::session();
        $dbsession = $session->get('company');
        if (ENVIRONMENT === 'testing')
        {
            $this->defaultGroup = 'tests';

            // Under Travis-CI, we can set an ENV var named 'DB_GROUP'
            // so that we can test against multiple databases.
            if ($group = getenv('DB'))
            {
                if (is_file(TESTPATH . 'travis/Database.php'))
                {
                    require TESTPATH . 'travis/Database.php';

                    if (! empty($dbconfig) && array_key_exists($group, $dbconfig))
                    {
                        $this->tests = $dbconfig[$group];
                    }
                }
            }
        }
    }

    //--------------------------------------------------------------------
    /**
     * The directory that holds the Migrations
     * and Seeds directories.
     *
     * @var string
     */
    public $filesPath = APPPATH . 'Database/';

    /**
     * Lets you choose which connection group to
     * use if no other is specified.
     *
     * @var string
     */
    public $defaultGroup = 'default';

    /**
     * The default database connection.
     *
     * @var array
     */
    public $default = [
        'DSN'      => '',
        'hostname' => 'localhost',
        'username' => 'root',
        'password' => '',
        'database' => $dbsession,
        'DBDriver' => 'MySQLi',
        'DBPrefix' => '',
        'pConnect' => false,
        'DBDebug'  => (ENVIRONMENT !== 'production'),
        'cacheOn'  => false,
        'cacheDir' => '',
        'charset'  => 'utf8',
        'DBCollat' => 'utf8_general_ci',
        'swapPre'  => '',
        'encrypt'  => false,
        'compress' => false,
        'strictOn' => false,
        'failover' => [],
        'port'     => 3306,
    ];

    /**
     * This database connection is used when
     * running PHPUnit database tests.
     *
     * @var array
     */
    public $empresas = [
        'DSN'      => '',
        'hostname' => 'localhost',
        'username' => 'root',
        'password' => '',
        'database' => 'empresas',
        'DBDriver' => 'MySQLi',
        'DBPrefix' => '',
        'pConnect' => false,
        'DBDebug'  => (ENVIRONMENT !== 'production'),
        'cacheOn'  => false,
        'cacheDir' => '',
        'charset'  => 'utf8',
        'DBCollat' => 'utf8_general_ci',
        'swapPre'  => '',
        'encrypt'  => false,
        'compress' => false,
        'strictOn' => false,
        'failover' => [],
        'port'     => 3306,
    ];



}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...