База данных загрузки Laravel

Поскольку вы написали функцию с именем foo и знаете, что она находится в myfile.js, почему вам нужно динамически получать эту информацию?

Сказав, что вы можете использовать arguments.callee.toString() внутри function (это строковое представление всей функции) и выведите значение имени функции.

Вот функция, которая выплюнет свое имя:

function foo() {
    re = /^function\s+([^(]+)/
    alert(re.exec(arguments.callee.toString())[1]);             
}
2
задан Peter verleg 13 July 2018 в 06:16
поделиться

1 ответ

Может быть установлен в вашей регистрационной функции AppServiceProvider.php:

public function register()
{
     $db = 2104018; // calculate the name

     config(['database.connections.mysql' => [
        'driver'    => 'mysql',
        'host'      => config('database.connections.mysql.host'),
        'database'  => $db,
        'username'  => config('database.connections.mysql.username'),
        'password'  => config('database.connections.mysql.password'),
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
        'strict'    => false,
    ]]);
}

Или другим способом было бы создать вспомогательную функцию в app/helpers.php, добавить ее к вашему composer.json в "autoload": { "files": ["app/helpers.php"] } и вызовите его из файла конфигурации database.php:

// app/helpers.php
if (!function_exists('calculate_db_name')) {
    function calculate_db_name() {
        $db = 12345; // do the thing...
        return $db;
    }
}

// config/database.php
'mysql' => [
    ...
    'database' => calculate_db_name()
    ...
]
1
ответ дан DigitalDrifter 17 August 2018 в 13:35
поделиться
  • 1
    Это приятное и элегантное решение! – Peter verleg 13 July 2018 в 06:33
  • 2
    Согласитесь, это довольно распространенный подход для приложений с несколькими арендаторами, которым необходимо переключить соединение с базой данных на основе активного идентификатора пользователя, хотя обычно это делается в промежуточном программном обеспечении. – DigitalDrifter 13 July 2018 в 06:38
  • 3
    Быстрый вопрос, каково влияние использования env() в базе кода вместо доступа к config(), особенно при кешировании ваших файлов конфигурации для использования в производстве? – Oluwatobi Samuel Omisakin 13 July 2018 в 07:39
  • 4
    Плохие вещи могут случиться. Вызовы env() не в файлах конфигурации возвращают значение null после запуска php artisan cache:config. Все файлы конфигурации скомпилированы в одну для быстрой загрузки. Полное раскрытие, я скопировал это в файл config/database.php, не задумываясь дважды, я соответствующим образом обновлю ответ. Спасибо что подметил это. – DigitalDrifter 13 July 2018 в 07:54
Другие вопросы по тегам:

Похожие вопросы: