如何指定Tinker使用不同的数据库连接?

时间:2018-04-04 11:32:37

标签: database laravel laravel-5.1 artisan tinker

我有两个数据库连接。一个用于我的应用程序,另一个用于测试 在我的 .. \ 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

我想使用修补程序进行连接'测试'但无法改变它。有没有办法改变修补程序的数据库连接类似于数据库种子?

3 个答案:

答案 0 :(得分:4)

当你的问题开始于使用一个数据库进行测试/开发而一个用于生产时,你应该考虑使用不同的环境,这样你就不会在部署和代码之间修改代码。本地测试。

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

php artisan tinker --env=local
  

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

使用local时,您可以阅读/your-app/.env.local

中的变量

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

答案 1 :(得分:1)

更改默认连接

$model_instance = new App\YourModel();
$model_instance->setConnection('new_connection');
$data = $model_instance->find(1);

答案 2 :(得分:1)

要将内部修补程序中的默认数据库连接设置为“ mysql_test”,请使用以下命令:

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

当您要测试迁移和种子服务器而不弄乱现有(正在工作的)本地数据库时,它特别有用。