2017-08-24 7 views
0

J'ai un plugin en octobre et je crée les tables neccessary et les semer par les docs.Comment fournir une sortie à la console lors de l'amorçage ou de la migration de tables?

Je souhaite fournir une sortie de console en faisant cela afin que je puisse déboguer le processus que je suis en train de configurer et d'attraper toutes les éventualités.

Comment puis-je transmettre des informations à la console lors de l'exécution de php artisan october:up?

use Db; 
use Seeder; 

class SeedGeoStateTable extends Seeder 
{ 
    public function run() 
    { 
    foreach(array_merge(glob(__DIR__.'/seed/geo_state/*.txt'), glob(__DIR__.'/seed/geo_state/*.json')) as $file) { 
      $this->insert($file);  
      gc_collect_cycles(); 
     } 
    } 

    public function insert($file) { 
     // output to console which file i'm seeding here 
     $json = json_decode(file_get_contents($file),true); 
     foreach($json as $entry) { 
      Db::table("geo_state")->insert($entry); 
     } 
    } 
} 
+0

Avez-vous essayé 'echo'? – Wreigh

Répondre

0

En utilisant la classe Symfony ConsoleOutput

$output = new \Symfony\Component\Console\Output\ConsoleOutput(2); 

$output->writeln('hello'); 

Cette volonté d'information de sortie de la console.

Dans les exemples cas

use Db; 
use Seeder; 

class SeedGeoStateTable extends Seeder 
{ 
    public function run() 
    { 
    foreach(array_merge(glob(__DIR__.'/seed/geo_state/*.txt'), glob(__DIR__.'/seed/geo_state/*.json')) as $file) { 
      $this->insert($file);  
      gc_collect_cycles(); 
     } 
    } 

    public function insert($file) { 
     // output to console which file i'm seeding here 
     $output = new \Symfony\Component\Console\Output\ConsoleOutput(2); 
     $output->writeln("Seeding table with file $file"); 
     $json = json_decode(file_get_contents($file),true); 
     foreach($json as $entry) { 
      Db::table("geo_state")->insert($entry); 
     } 
    } 
} 
0

Dans votre semeuse vous avez la propriété command disponibles, avec les méthodes suivantes disponibles:

$this->command->info($message) 
$this->command->line($message) 
$this->command->comment($message) 
$this->command->question($message) 
$this->command->error($message) 
$this->command->warn($message) 
$this->command->alert($message) 

Pour voir toutes les méthodes disponibles vérifier Illuminate\Console\Command.

Exemple

public function run() 
{ 
$this->command->comment('Seeding GeoState...'); 
foreach(array_merge(glob(__DIR__.'/seed/geo_state/*.txt'), glob(__DIR__.'/seed/geo_state/*.json')) as $file) { 
     $this->insert($file);  
     gc_collect_cycles(); 
    } 
} 
+0

Devrait oui, c'est la première chose que j'ai essayé, mais une commande parpar sera null en octobre '[Symfony \ Component \ Debug \ Exception \ FatalThrowableError] Appel à une fonction de membre info() sur null' D'où ma réponse moi-même à ma réponse problème. – Tschallacka

+0

Got it, ils prétendent que Octobre est entièrement personnalisable parce qu'il est basé sur Laravel, mais il semble qu'ils manquent de documentation sur les composants personnalisés comme Seeders:/ – Desh901

+0

oui, comme l'objet est là, je peux y accéder, mais ce n'est pas peuplé. Ou peut-être que j'appelle juste le semoir faux, mais bon, je viens du jour où les docs d'octobre consistaient fondamentalement de "Regardez le code, comprenez-le, regardez les docs de laravels, bonne chance yo!" donc je suis content de voir jusqu'où cela s'est passé. C'est très puissant et une belle addition à laravel. – Tschallacka