我必须种子相当多的数据到一个数据库,我希望能够向用户显示一个进度条,而这种情况发生。我知道这是有记录的:
- https://laravel.com/docs/master/artisan#registering-commands(仅在上面)
- http://symfony.com/doc/2.7/components/console/helpers/progressbar.html
但我不想把它放进播种机里
<?php
use Illuminate\Database\Seeder;
class SubDivisionRangeSeeder extends Seeder
{
public function run()
{
$this->output->createProgressBar(10);
for ($i = 0; $i < 10; $i++) {
sleep(1);
$this->output->advance();
}
$this->output->finish();
}
}
字符串
或者是
<?php
use Illuminate\Database\Seeder;
class SubDivisionRangeSeeder extends Seeder
{
public function run()
{
$this->output->progressStart(10);
for ($i = 0; $i < 10; $i++) {
sleep(1);
$this->output->progressAdvance();
}
$this->output->progressFinish();
}
}
5条答案
按热度按时间gijlo24d1#
您可以通过
$this->command->getOutput()
访问输出字符串
zf9nrax12#
下面是我的实现代码
字符串
rta7y2nd3#
你的代码不能工作,因为你在错误的类中使用了
$this->output
。如果您再次查看您分享的文章,$this-output
用于Artisan命令类中。事实上,每个Artisan命令都是使用Symfony Console组件执行的。
你实际上是想在数据库播种器中使用它:)
我的建议是:构建您的seeder,然后根据您的需要使用“install”或“seed”自定义命令调用它们。
rxztt3cl4#
为了防止其他人遇到类似的情况并正在寻找解决方案,我创建了以下基类:
字符串
然后用它来做这样的事。。
型
hgqdbh6s5#
字符串