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();
}
}
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...');
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.
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;
}
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");
}
'Symfony\Component\Console\Output\ConsoleOutput;' arbeitet für mich an Laravel 5.2
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.
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 );