2013-05-24 10 views
17

Byłem ciekawy, używam Laravel i Rzemieślnika do moich wędrówek. Czy istnieje metoda wysyłania informacji do konsoli? Nie mogę znaleźć żadnych informacji na ten temat. Na przykład:Jak echo do konsoli w Laravel i 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(); 
    } 

} 
+1

Po prostu podpowiedź, migracje służą do tworzenia schematów, w których nasiona służą do zaszczepienia bazy danych. To, co robisz powyżej, jest dla mnie ziarnem. –

+0

Dzięki za poprawkę Karl, tworzę schemat przy użyciu innej migracji, a następnie uruchamiam tę migrację, aby wypełnić dane przykładowe tylko dla mojego środowiska programistycznego. Czy to niewłaściwy sposób? –

+1

Jeśli używasz Laravel 4, lepiej to zrobić z nasionami: http://four.laravel.com/docs/migrations#database-seeding – JackPoint

Odpowiedz

24

Nie wiem, czy używasz laravel 3 lub laravel 4, a jeśli jej również możliwe w laravel 3, ale znalazłem to w the docs.

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

EDIT

Po przełączeniu na database seeds można to wykorzystać, aby wyświetlić komunikat

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

To Laravel 4, dostaję wezwanie do niezdefiniowanego błędu metody. Czy powinienem rozszerzyć klasę podczas mojej migracji? –

+0

@RyanSmith zredagował moją odpowiedź;) – JackPoint

+1

Dzięki;) Po prostu z ciekawości, czy istnieje sposób, aby to zrobić w Laravel 3? –

20

To działa na mnie

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

mam migracja, która przekształca dużą tabelę w bardziej wydajny format i używa tego do uzyskania pewnych postępów, gdy działa.

+2

To działa dla mnie na Laravel 4.2; zaakceptowana odpowiedź nie jest taka, –

2

"Symfony \ Component \ Console \ Output \ ConsoleOutput; ' u mnie działa na laravel 5,2

4

Ponieważ wybrana odpowiedź nie wydają się działać od 4,2, mówię po prostu keep it simple:

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

tak!Po prostu to proste! pracować z dowolną wersją Laravel: D – Davuz

1

Lubię kolor dodany przez Dumper (testowane na laravel 5.3). Myślę, że wygląda trochę ładniej niż przy użyciu echa. Problem mam z echem na zewnątrz jest to, że zbyt łatwo zostać pominięta, Dumper to dodaje trochę zieleni, która przykuje jedynek oczu:

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

To naprawdę nie jest odpowiedź na pytanie, czyż nie? –

+0

Dlaczego nie jest to odpowiedź na pytanie? Wydaje tekst, który chcesz na konsoli podczas migracji. Jedyną różnicą do jednej powyższej odpowiedzi jest to, że ma inny kolor (zielony). – gsaqui

0

siewna bazy danych w Laravel5, można użyć

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

do wydrukowania danych wyjściowych w wierszu poleceń.

<info> pokazuje komunikat w kolorze zielonym, gdzie jako <error> wyświetlany jest czerwony kolor, który może być używany do komunikatów o błędach.

Powiązane problemy