2016-08-05 9 views
2

私はlaravelアプリケーションで作業しています。引数とオプションを入力するのではなく、ファイルを入力できる方法があるかどうかを知りたいのです。私は他のAPIから多くのデータをインポートしたいと思います。laravel artisan consoleでファイルを入力する方法は?

各データベースのリセット時に同じデータが多くインポートされています。そのため、まずjsonファイルコレクションのデータをインポートした後、そのコレクションを毎回データベースに挿入して、別のAPIから毎回データを取得する時間を節約します。

現在、私は使用されているファイルをハードコーディングしていますが、コンソールコマンドの引数とオプションを指定するコマンドラインからファイルを取得できる方法はありますか?

答えて

1

これを行う方法はたくさんあります。

1つのオプションは、ファイルのパスをコマンドの引数として渡し、次にfile_get_contents()の機能を使用してファイルを読み取ることです。あなたの場合は

class YourCommand extends Command { 
    public function fire() { 
    dd(Storage::get($this->argument('path'))); 
    } 

    protected function getArguments() 
    { 
     return [['path', InputArgument::REQUIRED, "File path"]]; 
    } 
} 

:また、Laravelのファイルシステムライブラリとセットアップローカルストレージを利用する(詳細はhttps://laravel.com/docs/5.1/filesystemを参照)、お使いのストレージ/アプリフォルダにファイルを置くことができ

class YourCommand extends Command { 
    public function fire() { 
    dd(file_get_contents($this->argument('path')); 
    } 

    protected function getArguments() 
    { 
     return [['path', InputArgument::REQUIRED, "File path"]]; 
    } 
} 

ファイルパスの提供を避けたい場合は、STDINストリームからファイルを読み込むのが最も簡単な方法です:

class YourCommand extends Command { 
    public function fire() { 
    dd(file_get_contents('php://stdin'); 
    } 
} 

次のようなコマンドを実行するだけです:

php artisan yourcommand < file.json 
関連する問題