gpt4 book ai didi

laravel - 显示来自 DatabaseSeeder 的 Artisian 命令输出

转载 作者:行者123 更新时间:2023-12-04 16:09:38 25 4
gpt4 key购买 nike

我正在调用自定义 Artisan 命令,该命令通常在运行时显示输出。但是,当从 DatabaseSeeder 调用时,默认情况下不共享接口(interface),因此不显示任何输出。有没有办法将控制台输出接口(interface)从 DatabaseSeeder 传递给 Artisan:call

如果示例更适合您:

class DatabaseSeeder extends Seeder {
public function run() {
Eloquent::unguard();
$this->call('ApplicationsSeeder');
foreach(Config::get('app.steam_appids') as $appid) {
Artisan::call('schema:update', array('appid' => $appid)); // No output :(
}
...

Artisan::call 可以接受第三个参数,但它必须实现 Symphony\Component\Console\Output\OutputInterface 我不确定我是否可以通过来自 Seeder 对象。

最佳答案

如果您希望在实际生成输出时将输出写入控制台/终端,您可以通过调用以下方式使用播种机自己的OutputInterface:

$this->command->getOutput();

如果您希望在迁移中使用长时间运行的命令(而不是在命令运行时锁定控制台,显示 ProgressBar 可能会更好) > 或类似内容)。

例子:

Artisan::call('command:longrunningcommand', array(), $this->command->getOutput());

这将使命令使用与播种机相同的缓冲区进行输出。

关于laravel - 显示来自 DatabaseSeeder 的 Artisian 命令输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27735040/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com