Настройка соединений с базой данных автоматически на основе среды

Я знаю, что это так неправильно, но я попробовал Google для такого рода задач, и я ничего не нашел.

Я пытаюсь сделать if checkОсновываясь на своей среде Laravel, я соответствующим образом установлю соединение с базой данных между моей локальной средой и производственной средой Heroku.

connections' => [

'mysql'       => [

'driver'      => 'mysql',

if(env('APP_ENV') == 'local'){

'host'        => env('DB_HOST'),
'database'    => env('DB_DATABASE'),
'username'    => env('DB_USERNAME'),
'password'    => env('DB_PASSWORD'),
'unix_socket' => env('UNIX_SOCKET'),

}else{

'host'     => parse_url(getenv("DATABASE_URL"))["host"],
'database' => substr(parse_url(getenv("DATABASE_URL"))["path"], 1),
'username' => parse_url(getenv("DATABASE_URL"))["user"],
'password' => parse_url(getenv("DATABASE_URL"))["pass"],

}

'charset'     => 'utf8',
'collation'   => 'utf8_unicode_ci',
'prefix'      => '',
'strict'      => false,
]

],

0

Решение

Вы можете определить другое соединение, названное по имени exmaple mysql-heroku, а затем в ваших моделях вы можете сделать protected $connection = (env('APP_ENV') == 'local') ? 'mysql' : 'mysql-heroku';,

1

Другие решения

Звучит как Каскадный конфиг пакет будет отлично работать для вас. У Laravel 4 было что-то очень похожее на этот пакет.

Вы можете иметь config.local папка и config.production папка для вашей среды Heroku.

Пример конфигурации папки

config/ (production)

├── database.php

config.local/ (local)

├── database.php

config / database.php (производство)

...
connections' => [
'mysql'       => [
'driver'      => 'mysql',
'host'        => 'Heroku Host',
'database'    => 'Heroku Database',
'username'    => 'Heroku Username',
'password'    => 'Heroku Password',
'unix_socket' => 'Heroku Socket',
],
],
...

config.local / database.php (локальный)

...
connections' => [
'mysql'       => [
'driver'      => 'mysql',
'host'        => env('DB_HOST'),
'database'    => env('DB_DATABASE'),
'username'    => env('DB_USERNAME'),
'password'    => env('DB_PASSWORD'),
],
],
...
1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector