如何指定 Tinker 使用不同的数据库连接?
How to I specify Tinker to use a different database connection?
我有两个数据库连接。一个用于我的应用程序,另一个用于测试。
在我的..\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 'testing' 但无法更改它。有什么方法可以更改类似于数据库播种的修补程序的数据库连接吗?
更改默认连接
$model_instance = new App\YourModel();
$model_instance->setConnection('new_connection');
$data = $model_instance->find(1);
由于您的问题开始于使用一个数据库用于 testing/development 和一个用于生产,您应该考虑使用不同的环境,这将使您的代码在部署和本地测试之间没有变化。
通过指定您的环境可以轻松完成此任务:
php artisan tinker --env=local
By default, if you specify no --env
, you will be using /your-app/.env
当使用 local
时,您从 /your-app/.env.local
中读取变量
对于您的特定用例:
php artisan db:seed --env=local
进一步阅读:https://laravel.com/docs/5.6/configuration
注意:您应该避免将“.env”文件签入 VCS,.env.local 应该可以共享,但最好不要将生产凭据与您的 VCS 捆绑在一起。
要在 tinker 中将默认数据库连接设置为 'mysql_test' 我使用此命令:
>>> use DB
>>> DB::setDefaultConnection('mysql_test');
当您想在不弄乱现有(工作)本地数据库的情况下测试迁移和播种器时,它特别有用。
我有两个数据库连接。一个用于我的应用程序,另一个用于测试。 在我的..\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 'testing' 但无法更改它。有什么方法可以更改类似于数据库播种的修补程序的数据库连接吗?
更改默认连接
$model_instance = new App\YourModel();
$model_instance->setConnection('new_connection');
$data = $model_instance->find(1);
由于您的问题开始于使用一个数据库用于 testing/development 和一个用于生产,您应该考虑使用不同的环境,这将使您的代码在部署和本地测试之间没有变化。
通过指定您的环境可以轻松完成此任务:
php artisan tinker --env=local
By default, if you specify no
--env
, you will be using/your-app/.env
当使用 local
时,您从 /your-app/.env.local
对于您的特定用例:
php artisan db:seed --env=local
进一步阅读:https://laravel.com/docs/5.6/configuration
注意:您应该避免将“.env”文件签入 VCS,.env.local 应该可以共享,但最好不要将生产凭据与您的 VCS 捆绑在一起。
要在 tinker 中将默认数据库连接设置为 'mysql_test' 我使用此命令:
>>> use DB
>>> DB::setDefaultConnection('mysql_test');
当您想在不弄乱现有(工作)本地数据库的情况下测试迁移和播种器时,它特别有用。