douhui9631 2015-02-05 11:46
浏览 60
已采纳

Laravel 5更改环境以匹配URL

I have installed a fresh copy of Laravel.

I need it so i can set the environment to the URL.

So for instance in L4 i used this within the start.php file

$env = $app->detectEnvironment(function()
{
    return isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : '';
});

This then loaded the correct environment for the project, so if we had a local domain dev.laravel.com it would load in the environment variables from dev.laravel.com

I cannot do this within Laravel 5.

Any guesses how I can apply this?

  • 写回答

2条回答 默认 最新

  • dongxuxian1123 2015-02-05 16:59
    关注

    You can for example do it for use different database, then you have some different variables on .env like:

    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
    

    and in config/dababase.php:

    '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,
            ],
    

    and finally use:

    Config::set('database.default', "mysql") or Config::set('database.default', "mysql2")
    

    depending you need.

    For example I use to change database connection after login user doing it at controller abstract class changing the value depending session var, that is changed after login depending type of user:

    abstract class Controller extends BaseController {
    
        use DispatchesCommands, ValidatesRequests;
    
        public function __construct()
        {
            Config::set('database.default', Session::get('myapp.database','mysql'));
        }
    }
    

    After login I put to change this value:

    Session::set('myapp.database', 'mysql2') or Session::set('myapp.database', 'mysql')
    

    and in the next call to controller the database connections is changed.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 14名同学选出十名到西和,礼县,武都宕昌参加实习,每个学校一个人
  • ¥15 请问如何在openpcdet上对KITTI数据集的测试集进行结果评估?
  • ¥15 powerbuilder中的datawindow数据整合到新的DataWindow
  • ¥20 有人知道这种图怎么画吗?
  • ¥15 pyqt6如何引用qrc文件加载里面的的资源
  • ¥15 安卓JNI项目使用lua上的问题
  • ¥20 RL+GNN解决人员排班问题时梯度消失
  • ¥60 要数控稳压电源测试数据
  • ¥15 能帮我写下这个编程吗
  • ¥15 ikuai客户端l2tp协议链接报终止15信号和无法将p.p.p6转换为我的l2tp线路