34

I was curious, I'm using Laravel and Artisan for my migrations. Is there a method to output information to the console? I can't seem to find any information on this. For example:

<?php

class Generate_Sample_Users{

    public function up(){

        //Echo to console here
        echo "Creating sample users...";

        $generator = new Sample_Data();
        $user_count = 30;
        $users = array();


        for($i=0; $i < $user_count; $i++){
            array_push($users, $generator->generate_user($i));
        }

        DB::table('users')->insert($users);
    }

    public function down(){
        DB::table('users')->delete();
    }

}
4

8 回答 8

66

不知道您使用的是 Laravel 3 还是 Laravel 4,以及它是否也可以在 Laravel 3 中使用,但我在docs中找到了这个。

$this->info('Creating sample users...');

编辑

如果您切换到数据库种子,您可以使用它来显示一条消息

$this->command->info('Creating sample users...');
于 2013-05-24T12:09:37.470 回答
40

这对我有用

use Symfony\Component\Console\Output\ConsoleOutput;

class MigrateData {

    public function up()
    {
        $output = new ConsoleOutput();

        for($i=0; $i<50000; $i++)
        {
             $output->writeln('Converting '.$i.' of 50000');
        }
     }
}

我有一个迁移,它将一个大表转换为更有效的格式,并在它工作时使用它来取得一些进展。

于 2015-02-27T10:50:34.997 回答
10

对于 Laravel5 中的数据库播种,您可以使用

$this->command->getOutput()->writeln("<info>Your message here</info>");

在命令行上打印输出。

<info>以绿色显示消息,其中<error>以红色显示,可用于错误消息。

于 2017-09-12T05:03:30.420 回答
9

由于选择的答案自 4.2 以来似乎不起作用,我说保持简单:

public function up() {
     // Migration runs //
     echo 'Records processed' . PHP_EOL;
}
于 2016-02-12T15:07:23.697 回答
5

谈到 Laravel 5(你可以检查你的版本php artisan --version),迁移基类没有打印方法。

一个简单echo的就可以了,但是,如果你愿意,你可以扩展它并添加这个功能:

abstract class MyMigration extends Migration
{
    // colors for console echo
    protected const COLOR_RED = 'COLOR_RED';
    protected const COLOR_GREEN = 'COLOR_GREEN';
    protected const COLOR_YELLOW = 'COLOR_YELLOW';

    protected function logMessage($str, String $color = null)
    {
        switch ($color) {
            case self::COLOR_RED:
                $str = "\033[01;31m$str\033[0m";
                break;
            case self::COLOR_GREEN:
                $str = "\033[01;32m$str\033[0m";
                break;
            case self::COLOR_YELLOW:
                $str = "\033[01;33m$str\033[0m";
            break;

            echo $str . PHP_EOL;
        }
    }
}

然后只需使用您的消息调用它:

$this->logMessage("Your message", self::COLOR_RED );
于 2019-01-25T10:16:49.177 回答
5

我喜欢 Dumper 添加的颜色(在 Laravel 5.3 上测试)。我认为看起来比使用回声更好。我对回声的问题是它太容易被错过,Dumper 它添加了一些吸引眼球的绿色:

public function up() {
     // Migration runs //
     (new Illuminate\Support\Debug\Dumper)->dump("A bit more colorful text");
}
于 2016-12-01T23:13:50.310 回答
3

'Symfony\Component\Console\Output\ConsoleOutput;' 在 Laravel 5.2 上为我工作

于 2015-10-12T09:15:17.893 回答
-1

只需使用 print()

例如

$var = 'test';
print("\n$var");
于 2021-06-16T19:56:27.420 回答