首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel 5更改环境以匹配URL

Laravel 5更改环境以匹配URL
EN

Stack Overflow用户
提问于 2015-02-05 11:46:44
回答 2查看 1.8K关注 0票数 1

我安装了一本新的拉拉维尔。

我需要它,这样我就可以将环境设置为URL。

例如,在L4中,我在start.php文件中使用了这个

代码语言:javascript
复制
$env = $app->detectEnvironment(function()
{
    return isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : '';
});

这就为项目加载了正确的环境,因此如果我们有一个本地域dev.laravel.com,它将从dev.laravel.com加载环境变量。

我不能在Laravel 5里这么做。

有猜到我该怎么应用这个吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-02-05 16:59:36

例如,您可以使用不同的数据库,然后在.env上有一些不同的变量,例如:

代码语言:javascript
复制
DB_HOST=localhost
DB_DATABASE=database1
DB_USERNAME=foo
DB_PASSWORD=foo

DB_HOST_2=localhost
DB_DATABASE_2=database2
DB_USERNAME_2=foo
DB_PASSWORD_2=foo

在config/dababase.php中:

代码语言:javascript
复制
'connections' => [

        'mysql' => [
            'driver'    => 'mysql',
            'host'      => env('DB_HOST', 'localhost'),
            'database'  => env('DB_DATABASE', 'forge'),
            'username'  => env('DB_USERNAME', 'forge'),
            'password'  => env('DB_PASSWORD', ''),
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
            'strict'    => false,
        ],

        'mysql2' => [
            'driver'    => 'mysql',
            'host'      => env('DB_HOST_2', 'localhost'),
            'database'  => env('DB_DATABASE_2', 'forge'),
            'username'  => env('DB_USERNAME_2', 'forge'),
            'password'  => env('DB_PASSWORD_2', ''),
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
            'strict'    => false,
        ],

最后使用:

代码语言:javascript
复制
Config::set('database.default', "mysql") or Config::set('database.default', "mysql2")

取决于你的需要。

例如,在登录用户在控制器抽象类中更改值取决于会话var (在登录后取决于用户的类型后)更改数据库连接:

代码语言:javascript
复制
abstract class Controller extends BaseController {

    use DispatchesCommands, ValidatesRequests;

    public function __construct()
    {
        Config::set('database.default', Session::get('myapp.database','mysql'));
    }
}

登录后,我放置以更改此值:

代码语言:javascript
复制
Session::set('myapp.database', 'mysql2') or Session::set('myapp.database', 'mysql')

在下一次对控制器的调用中,数据库连接将被更改。

票数 0
EN

Stack Overflow用户

发布于 2015-02-05 11:47:46

您需要在每个环境中放置一个.env文件,并将这些环境的特定配置放入.env文件中。

所以你可以在一个环境中

代码语言:javascript
复制
APP_ENV=local
APP_DEBUG=true
DB_PASSWORD=secret

在另一个.env中,在不同的环境中,您可能会将

代码语言:javascript
复制
APP_ENV=staging
APP_DEBUG=false
DB_PASSWORD=other
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28343133

复制
相关文章

相似问题

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