Как эхо на консоли в Laravel и Artisan? - программирование
Подтвердить что ты не робот

Как эхо на консоли в Laravel и Artisan?

Мне было любопытно, я использую Laravel и Artisan для моих миграций. Есть ли способ вывода информации на консоль? Я не могу найти никакой информации об этом. Например:

<?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();
    }

}
4b9b3361

Ответ 1

Не знаю, используете ли вы Laravel 3 или Laravel 4, и если это возможно и в Laravel 3, но я нашел это в документах.

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

ИЗМЕНИТЬ

Если вы переключитесь на семена базы данных, вы можете использовать это для отображения сообщения

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

Ответ 2

Это работает для меня

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');
        }
     }
}

У меня есть миграция, которая преобразует большую таблицу в более эффективный формат и использует ее для достижения определенного прогресса, пока она работает.

Ответ 3

Так как выбранный ответ, похоже, не работает с 4.2, я просто говорю просто:

public function up() {
     // Migration runs //
     echo 'Records processed' . PHP_EOL;
}

Ответ 4

Мне нравится цвет, добавленный Dumper (проверен на Laravel 5.3). Я думаю, выглядит немного лучше, чем использование эха. Проблема, с которой я сталкиваюсь, заключается в том, что ее слишком легко упускать, а самонакладчик добавляет немного зеленого цвета, который бросается в глаза:

public function up() {
     // Migration runs //
     (new Illuminate\Support\Debug\Dumper)->dump("A bit more colorful text");
}

Ответ 5

'Symfony\Component\Console\Output\ConsoleOutput;' работает для меня на Laravel 5.2

Ответ 6

Для посева базы данных в Laravel5 вы можете использовать

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

чтобы распечатать вывод в командной строке.

<info> показывает сообщение в зеленом цвете, где <error> отображается красным цветом, который может использоваться для сообщений об ошибках.

Ответ 7

Говоря о Laravel 5 (вы можете проверить версию, которую вы используете с php artisan --version), у базового класса Migration нет метода печати.

Простое 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 );