首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于环境自动配置数据库连接

问基于环境自动配置数据库连接
EN

Stack Overflow用户
提问于 2017-02-20 21:57:24
回答 2查看 173关注 0票数 0

我知道这很不对劲,但我已经在谷歌上尝试过这类任务,但我什么也没找到。

目标

我正在尝试创建一个if check,基于我的Laravel环境,我将在我的本地环境和我的Heroku生产环境之间适当地设置数据库连接。

代码语言:javascript
复制
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,
    ]

],
EN

回答 2

Stack Overflow用户

发布于 2017-02-20 22:17:53

听起来包很适合您。Laravel 4与该软件包非常相似。

您可以为您的Heroku环境创建一个config.local文件夹和一个config.production文件夹。

文件夹配置示例

代码语言:javascript
复制
config/ (production)

├── database.php

config.local/ (local)

├── database.php

配置/数据库.php(生产)

代码语言:javascript
复制
...
connections' => [
    'mysql'       => [
        'driver'      => 'mysql',
        'host'        => 'Heroku Host',
        'database'    => 'Heroku Database',
        'username'    => 'Heroku Username',
        'password'    => 'Heroku Password',
        'unix_socket' => 'Heroku Socket',
    ],      
],
...

本地config.local/.php(本地)

代码语言:javascript
复制
...
connections' => [
    'mysql'       => [
        'driver'      => 'mysql',
        'host'        => env('DB_HOST'),
        'database'    => env('DB_DATABASE'),
        'username'    => env('DB_USERNAME'),
        'password'    => env('DB_PASSWORD'),
    ],      
],
...
票数 1
EN

Stack Overflow用户

发布于 2017-02-20 22:33:50

您可以定义另一个连接,命名为exmaple mysql-heroku,然后在您的模型中执行protected $connection = (env('APP_ENV') == 'local') ? 'mysql' : 'mysql-heroku';。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42346509

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档