You can definitely set database settings (and any other config setting) by environment.
For Laravel 3 (for Laravel 4 and Laravel 5 see below):
首先,你需要在paths.php
中定义$environments
,并将其设置为如下:
$environments = array(
'development' => array('*.dev'),
'production' => array('*.com'),
);
Laravel will automatically look for this variable, and if set, will use the associated configuration.
通常情况下,您的文件夹为config
,设置为database.php
和auth.php
现在只需为你计划使用的每Laravel_Env
个文件夹创建一个新文件夹(比如开发).你会得到这样的文件夹 struct ;
/application
/config
/development
database.php
/production
database.php
application.php
config.php
database.php
...
user_agents.php
You'll note I've only included database.php
in each subfolder. Laravel will always load the default config settings first, then override them with any custom configs from the environments setting.
Finally, in your development/database file, you would have something like this;
<?php
return array(
'default' => 'mysql'
);
p.s. I just tested this on the current 3.2.12 build of Laravel - and it definitely works.
Bonus Tip: You can also automatically set an environment for Artisan, so you do not have to include the environment manually on each command line! To do this:
You need to know your 'hostname' that you are running Artisan on. To find out - temporarily edit the artisan.php
in your root folder, and add var_dump(gethostname());
to line 2 (i.e. above everything).
从命令行运行php artisan
.您将获得一个包含您的主机名的字符串转储.在我的 case 中是"TSE-Win7";
删除对artisan.php
文件的更改
将主机名(即"TSE-Win7")添加到环境中.
你应该以这样的方式结束:
$environments = array(
'development' => array('*.dev', 'TSE-Win7'),
'production' => array('*.com'),
);
Artisan will now run using your development environment. If you deploy to a live server - re-run these steps to get the hostname() for the server, and you can configure a specific artisan config just for the server!
For Laravel 4:
The default environment is always production
. But in your start.php file you can define additional environments.
$env = $app->detectEnvironment(array(
'local' => array('your-machine-name'),
));
On Linux and Mac, you may determine your hostname
by type hostname
in your terminal - it will output the name of your computer. On Windows put dd(gethostname());
at the beginning of your routes.php
file - and run the website once - it will show you the current hostname of your computer.
To get the current environment as a variable in your application.读这篇文章,在这里回答.Laravel 4: how can I get the environment value?
For Laravel 5:
There is single configuration file, called .env
in your root directory.
Watch this laracast, config explained fully.