it-swarm.com.de

Echo auf Konsole Laravel und Handwerker?

Ich war neugierig, ich verwende Laravel und Artisan für meine Wanderungen. Gibt es eine Methode, um Informationen an die Konsole auszugeben? Ich kann anscheinend keine Informationen dazu finden. Zum Beispiel:

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

}
23
Ryan Smith

Ich weiß nicht, ob Sie Laravel 3 oder Laravel 4 verwenden, und ob es auch in Laravel 3 möglich ist, aber ich habe dies in the docs gefunden.

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

EDIT

Wenn Sie zu Datenbanksamen wechseln, können Sie dies zum Anzeigen einer Nachricht verwenden

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

Das funktioniert für mich

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

Ich habe eine Migration, bei der eine große Tabelle in ein effizienteres Format konvertiert wird, und so können Sie während der Arbeit einige Fortschritte erzielen.

22
mtopley

Da die gewählte Antwort seit 4.2 nicht zu funktionieren scheint, sage ich es einfach:

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

Ich mag die Farbe, die der Dumper hinzugefügt hat (getestet auf Laravel 5.3). Ich finde ein bisschen schöner als das Echo. Das Problem, das ich mit dem Echo-Out habe, ist, dass es zu einfach ist, übersehen zu werden.

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

'Symfony\Component\Console\Output\ConsoleOutput;' arbeitet für mich an Laravel 5.2

2
xinHAOr

Für das Seeding von Datenbanken in Laravel5 können Sie verwenden

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

um die Ausgabe in der Befehlszeile auszudrucken.

<info> zeigt die Nachricht in grüner Farbe, wobei <error> in roter Farbe angezeigt wird, die für Fehlermeldungen verwendet werden kann.

2
Chittaranjan

Apropos Laravel 5 (Sie können Ihre Version mit php artisan --version überprüfen), die Basisklasse Migration hat keine Druckmethode. 

Eine einfache echo erledigt die Arbeit. Wenn Sie möchten, können Sie sie erweitern und diese Funktionalität hinzufügen:

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

und rufen Sie es einfach mit Ihrer Nachricht an:

$this->logMessage("Your message", self::COLOR_RED );
0
guyaloni