在数据库连接上使用 Laravel Artisan 命令

3

我正在处理一个项目,其中有多个数据库连接。我能够从我的控制器中运行artisan命令,例如Artisan::call('migrate', array('--path' => 'app/database/migration'));

然而,这只在我的默认数据库连接上运行得很好。现在我正在寻找一种方法来调用其他动态数据库连接的artisan命令。我知道我可以在命令中指定数据库名称,例如Artisan::call('migrate', array('--database' => 'myDatabase', '--path' => 'app/database/migration/myCustomMigration')); 但它并没有像预期那样工作。它仍在我的默认数据库连接上运行命令。

是否有任何方法可以做到这一点,就像我可以使用 eloquent 进行操作一样...

$user = new User;
$user->setConnection('myDatabaseConnectionKey');
$user->email = $email;
$user->password = Hash::make('password');
$user->first_name = 'First name';
$user->last_name = 'Last name';
$user->created_at = new DateTime();
$user->updated_at = new DateTime();
$user->save();

提前感谢您。

1个回答

1
你应该考虑为不同的数据库连接设置不同的环境。 然后,你可以使用--env标志在该环境中调用任何artisan命令。

Laravel环境配置文档


我已经为我的本地开发设置了环境。仍然出现“Database [dbName] not configured.”的错误,尽管我已经为它设置了连接,并且可以使用“Config::get('database.connections');”来查看它。 - Mohammad Shoriful Islam Ronju
3
好的!我之前做错了!现在这个命令可以正常运行:Artisan::call('migrate', array('--database' => 'connectionKey', '--env' => 'local', '--path' => 'app/database/migration/myCustomMigration')); - Mohammad Shoriful Islam Ronju
谢谢Mohammad!那正是我在寻找的!我也错过了--database参数。 - Poncho

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接