J'étais curieux, j'utilise Laravel et Artisan pour mes migrations. Existe-t-il une méthode pour sortir des informations sur la console? Je n'arrive pas à trouver aucune information à ce sujet. Par exemple:
<?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();
}
}
Je ne sais pas si vous utilisez Laravel 3 ou Laravel 4, et si c'est également possible dans Laravel 3, mais j'ai trouvé cela dans les docs .
$this->info('Creating sample users...');
MODIFIER
Si vous passez à graines de la base de données vous pouvez l'utiliser pour afficher un message
$this->command->info('Creating sample users...');
Ça marche pour moi
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');
}
}
}
J'ai une migration qui convertit une grande table en un format plus efficace et l'utilise pour obtenir des progrès pendant son fonctionnement.
Puisque la réponse choisie ne semble pas fonctionner depuis la version 4.2, je dis simplement de rester simple:
public function up() {
// Migration runs //
echo 'Records processed' . PHP_EOL;
}
J'aime la couleur ajoutée par le Dumper (testé sur Laravel 5.3). Je pense que semble un peu plus agréable que d'utiliser l'écho. Le problème que j'ai avec l'écho est qu'il est trop facile de rater le Dumper, il ajoute un peu de vert qui attire l'attention:
public function up() {
// Migration runs //
(new Illuminate\Support\Debug\Dumper)->dump("A bit more colorful text");
}
'Symfony\Component\Console\Output\ConsoleOutput;' travaille pour moi sur Laravel 5.2
Pour l'ensemencement dans Laravel5, vous pouvez utiliser
$this->command->getOutput()->writeln("<info>Your message here</info>");
pour imprimer le résultat en ligne de commande.
<info>
affiche le message en vert, alors que <error>
apparaît en rouge et peut être utilisé pour les messages d'erreur.
En parlant de Laravel 5 (vous pouvez vérifier la version que vous avez avec php artisan --version
), la classe de base Migration n’a pas de méthode d’impression.
Un simple echo
fera le travail. Cependant, si vous le souhaitez, vous pouvez l’étendre et ajouter cette fonctionnalité:
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;
}
}
}
et appelez-le simplement avec votre message:
$this->logMessage("Your message", self::COLOR_RED );