web-dev-qa-db-ja.com

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

}
28
Ryan Smith

Laravel 3またはLaravel 4を使用しているかどうか、およびLaravel 3、しかし、私はこれを the docs で見つけました。

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

[〜#〜]編集[〜#〜]

database seeds に切り替えると、これを使用してメッセージを表示できます

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

これは私のために働く

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

大きなテーブルをより効率的な形式に変換する移行があり、これを使用して、機能している間にある程度の進歩を遂げています。

29
mtopley

選択された答えは4.2以降機能しないようですので、単純にしておいてください。

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

Laravel5でのデータベースのシードには、次を使用できます。

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

コマンドラインに出力を出力します。

<info>は緑色でメッセージを示し、<error>はエラーメッセージで使用できる赤色で表示されます。

6
Chittaranjan

ダンパーによって追加された色が好きです(Laravel 5.3でテスト済み)。エコーを使用するよりも少し見栄えが良いと思います。エコー出力に関する問題は、簡単にできないことです見逃した、それは人の目を引く緑色のビットを追加するダンパー:

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

'Symfony\Component\Console\Output\ConsoleOutput;' Laravel 5.2

2
xinHAOr

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 );
1
guyaloni