Я знаю, что это так неправильно, но я попробовал 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,
]
],
Вы можете определить другое соединение, названное по имени exmaple mysql-heroku, а затем в ваших моделях вы можете сделать protected $connection = (env('APP_ENV') == 'local') ? 'mysql' : 'mysql-heroku';
,
Звучит как Каскадный конфиг пакет будет отлично работать для вас. У 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'),
],
],
...