2016-04-09 10 views
0

私のカスタムArtisanコマンドで私は自分のDBから項目のリストを取得します。私はそれらを繰り返し、私のDownloaderControllerのメソッドを通してそれらを実行したいと思います。これどうやってするの?ベストプラクティスは何ですか?データをフェッチする責任Artisanコマンドのコントローラからの実行方法?

DownloadCommand.php

public function handle() 
    { 
     $files = File::all(); 

     foreach($files as $file) 
     { 
      // downloadFile method belongs to DownloadController 
      downloadFile($file); 
     } 
    } 

DownloadController.php

public function downloadFile($file) 
{ 
    // some example logic to download file 
    if(wget($file)) 
    { 
     $file->status = 'Downloaded'; 
    } 
    else 
    { 
     $file->status = 'Failed'; 
    } 

    $file->save(); 
} 
+0

正しい方法は、ロジックを別のクラスに移動して、ControllerとComandの両方から呼び出すことができるようにすることです(コントローラーとコマンドはアプリとのやり取りのさまざまな方法を表示しますが、同じレベルにあります。 – naneri

+0

downloadFileも '$ file'レコードを更新するとどうなりますか? (更新されたポストを確認してください) – Imran

+0

次に、その$ファイルをクラスメソッドのパラメータとして渡します。 Filesaver :: saveFile($ file)と同様です。 – naneri

答えて

0

ロジックは、コントローラに含めることはできません。そのためのリポジトリ(または特殊なサービス)を作成し、それをあなたのコマンドに注入します。

関連する問題