【市場価値がわかる】エンジニア転職におすすめなサイト

Laravelでコマンド作成手順を解説!バッチ処理にも応用できる

20代の転職ならマイナビジョブ

Laravelでコマンドを作成するにはどうすればいいんだろう…?

こんな疑問を解決します。

この記事では、Laravelのコマンド作成手順について解説し、ゴールはこんな感じです。

php artisan book:insertDataのようにコマンドを自作し、実行すると本のデータを登録できるようになる。

コマンド実行後↓

Contents

動作環境

Docker 20.10.7
PHP 7.4.22
Laravel 8.53.1
mySQL 5.7
データベースのツール phpmyadmin

Laravelでコマンドを作成する手順

この記事ではコマンドを自作し、コマンドを打つと任意の処理を実行させます。例えば、
Laravelにはphp artisan serveなどがありますが、自分でphp artisan insertDataみたいにコマンドを作り、そのコマンドを打てば、データを登録させる処理を走らせるってイメージですね。

Laravelでコマンドを作成する流れは以下です。

STEP
php aritsan make:commandでコマンドファイルを作成する
STEP
作成したコマンドファイルを編集する
STEP
php artisan コマンド名で実行する

コマンドファイルを作成する

まずは最初のステップとしてコマンドファイルを作成しましょう。

今回は試しに、コマンドを打ったらデータを登録するようにするので、コマンドの名称はinsertBookDataとします。

php artisan make:command insertBookData

すると、コマンドファイルが作成されます。

コマンドファイルの初期状態は、以下です。

<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;

class insertBookData extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'command:name';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Command description';

    /**
     * Create a new command instance.
     *
     * @return void
     */
    public function __construct()
    {
        parent::__construct();
    }

    /**
     * Execute the console command.
     *
     * @return int
     */
    public function handle()
    {
        return 0;
    }
}

作成したコマンドファイルを編集する

次のステップとして、先ほど作成したコマンドファイルを編集しましょう。

$signatureはコマンド名です。例えば、$signature = “test”と定義すると、php artisan testでこのファイルを呼び出せます。
$descriptionは、コマンドファイルの詳細です。デフォルトのままでもいいですが、コマンドの説明を書いておくと、ファイルで何しているかわかるので親切です。
handleで、実際にコマンドを打った時の処理を定義します。

まずは、コマンドが実行できるか簡単な例で紹介します。

<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;

class insertBookData extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'example:test';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'コマンドテスト';

    /**
     * Create a new command instance.
     *
     * @return void
     */
    public function __construct()
    {
        parent::__construct();
    }

    /**
     * Execute the console command.
     *
     * @return int
     */
    public function handle()
    {
        echo "コマンド実行成功".PHP_EOL;
    }
}

php artisan listを打ってみてください。php artisan 〇〇で使えるコマンド一覧が確認できます。
先ほど登録したコマンドがあることを確認してください。
ずらーっとコマンド一覧が出てきますが、
example:test コマンドテストのようにあると思います。

コマンドを実行してみる

php artisan example:test

ターミナルで上記を打つと、handleで定義した処理が実行されるので、コマンド実行成功とでます。

〇〇:/var/www/html/app# php artisan example:test
コマンド実行成功

これでコマンドを打つと、処理が実行されることが確認できたので、ここからデータの登録処理を作ります。

データを登録するコマンドファイルにする

より実践的なコマンドになるように、データを登録するコマンドにします。本(booksテーブル)のデータを登録してみます。

booksテーブルは以下のような構造です。

<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;
use Illuminate\Support\Facades\DB; // 追加
use Carbon\Carbon; // 追加

class insertBookData extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'book:insertData';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = '本のデータをインサートする';

    /**
     * Create a new command instance.
     *
     * @return void
     */
    public function __construct()
    {
        parent::__construct();
    }

    /**
     * Execute the console command.
     *
     * @return int
     */
    public function handle()
    {
     // insertでデータを挿入する
        return DB::table('books')
            ->insert([
                'user_id'     => 1,
                'category_id' => 1,
                'book_name'   => '2週間でLaravelマスター',
                'book_min_price'  => 1500,
                'book_max_price'  => 2500,
                'image_file_path' => NULL,
                'created_at'      => Carbon::now(), // 現在の日付を取得できる
            ]);
    }
}

今回は、本のデータを登録するので、コマンド名はbook:insertDataとしました。php artisan listでもbook:insertData 本のデータをインサートするが確認できます。

あとはコマンドを実行すればデータを登録できます。

php artisan book:insertData

データが登録できていることが確認できますね!

【まとめ】Laravelでコマンドの作成手順

今回はLaravelでコマンドを作成する手順を解説しました。

コマンドを自作できれば任意の時間にバッチ処理もできるので便利です。

このブログでは、他にも実務に役立つLaravelの記事を書いているので、ぜひチェックしてみてくださいね!

20代の転職ならマイナビジョブ

現役エンジニアに相談するならMENTA(おすすめ)

スキルを売り買いするならココナラ

動画教材ならUdemy

コメント

コメントする

CAPTCHA


Contents
閉じる