如何指定修补程序以使用不同的数据库连接



我有两个数据库连接。一个用于我的应用,另一个用于测试。在我的 .. config database.php

         '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,
        ],
        'testing' => [
            'driver'    => 'mysql',
            'host'      => env('DB_TEST_HOST', 'localhost'),
            'database'  => env('DB_TEST_DATABASE', 'forge'),
            'username'  => env('DB_TEST_USERNAME', 'forge'),
            'password'  => env('DB_TEST_PASSWORD', ''),
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
            'strict'    => false,
        ],

我能够使用

更改播种时的数据库连接
php artisan db:seed --database=testing

我想将Tinker用于连接"测试",但无法更改它。有什么方法可以更改与数据库播种类似的Tinker的数据库连接?

当您的问题开始使用一个数据库进行测试/开发,一个用于生产,您应该考虑使用不同的环境,这将使您在部署和AMP之间没有更改代码;本地测试。


可以通过指定您的环境轻松实现此任务:

php artisan tinker --env=local

默认情况下,如果未指定--env,则将使用/your-app/.env

使用local时,您会从/your-app/.env.local

读取变量

对于您的特定用例:

php artisan db:seed --env=local

laravel 5.1的进一步阅读:https://laravel.com/docs/5.1/configuration

最新版本:https://laravel.com/docs/configuration

nb:您应该避免在" .env"中检查。向VCS文件,.env.local应该可以共享,但是最好不要将生产凭据与您的VC捆绑。

将默认数据库连接设置为 tinker中的的'mysql_test'我使用此命令:

>>> use DB
>>> DB::setDefaultConnection('mysql_test');

当您想测试迁移和播种机而不弄乱现有(工作的(本地数据库时,它特别有用。

更改默认连接

$model_instance = new AppYourModel();
$model_instance->setConnection('new_connection');
$data = $model_instance->find(1);

最新更新