Laravel4でArtisanによるCLI開発
Laravel4の便利機能のひとつにArtisanというコマンドラインツールが存在します。
プロジェクトルートにて、php artisan ***** とコマンドを打つことで、様々な命令を実行させることができる機能です。
今回は、とりあえず、CSVデータを読み込んで、DBにデータを保存するサンプルを作っていくことにします。
[下準備と前提条件]
[コマンドクラスの作成]
- プロジェクトルートにて以下のコマンドを実行
- php artisan command:make ItemImport
- app/command/ディレクトリにItemImportクラスファイルが生成される。
- オートロードのクラスマップに反映させるために、composer dump-autoloadもしておきましょう。
- php artisan command:make ItemImport
[処理を記述]
- ItemImportクラスファイルを開いて、以下を修正
- protected $name : artisanコマンドで呼び出す際のコマンド名
- protected $description : listやhelpを実行した時に表示されるコマンドの説明文
- getArguments():コマンドが受け取る引数(今回は使いません)
- 初期状態では、array('example', InputArgument::REQUIRED, 'An example argument.')となっているので、コメントアウト。
- getOptions():コマンドが受け取るオプション(今回は使いません)
-肝心の処理はfireメソッドに記述する。
<?php class ItemImport extends Command { protected $name = 'new-item'; protected $description = 'New Item Impoert!'; /* 中略 */ public function fire(){ // CSV $handle = fopen(storage_path()."/db/item.csv", "r"); while (($data = fgetcsv($handle, 1000, ",")) !== FALSE){ // Eloquentでデータを挿入 $item=new Item; $item->item_code=$data[0]; $item->item_name=$data[1]; $item->item_price=$data[2]; $item->save(); } echo "Completed!"; } protected function getArguments(){ return array( //array('example', InputArgument::REQUIRED, 'An example argument.'), ); }
さぁ、これで使える!と思いきや、実はまだやることがあります。作ったコマンドをアプリケーションに登録しなければなりません。
方法は簡単で、app/start/artisan.phpを開いて、以下のように追加してあげればいいだけです。
<?php Artisan::add(new ItemImport);
これで、準備OK。プロジェクトルートにて、以下のコマンドを実行
- php artisan item-import
- Completed!と表示されていれば、成功です。おめでとうございます。