cronで実行する独自ArtisanコマンドをLaravelで自作してみた

laravel-artisan-command
  • URLをコピーしました!

Laravelユーザーには既知の通り、Artisanという便利なコマンドラインインターフェイスが存在します。
今回の目的は、独自コマンド自作し、cronで定期実行することです。
以前紹介した、CSVデータ使ってデータベースへ自動でインポートするコマンドを作成します。

目次

Artisanコマンドを作る

Artisanコマンドには、普段からよく使うコントローラーやモデルを作成するための[make:~]や、データベースを構築するための[migrate]が用意されています。
今回自作するコマンドは[command:~]を使って実行します。
例として、[importcsv]というコマンド名で作成することにします。
完成するとこのように実行します。

独自コマンドを作成する

新しくコマンドを作成するにもコマンドを使いますww
それが、[make:command]です。

上記を実行すると[app/Console/Commands]直下に[ImportCsv.php]ファイルが生成されたと思います。
先に完成形を書いて、後程解説していきます。

app/Console/Commands/ImportCsv.php

解説

まずは使いたいモデルやパッケージを読み込みます。

[$signature]変数に実際叩く時のコマンド名を設定します。

このように設定すると、冒頭でもお伝えした通り、

で、コマンドを実行することができます。[$description]にはコマンドの説明を追加します。(任意です)

例としてPostモデルを使うとためにコンストラクタを追加しています。

実際の処理はhandle()に記述します。

内容は以前と同じものですが、コンソール画面にメッセージを表示する、またログを出力するために少し手を加えてます。
詳細は下記のコントローラー内のimport()を参照

進行状況、エラーの表示

進行状況をコンソール画面に表示するには、以下のメソッドを使います。

他にも、line、comment、question、errorメソッドが用意されています。
違いがよくわかりませんが、色が変わるようです。また、ログを出力するには以下のようにします。

こちらも種類がありますので状況によって使い分けてください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次