Laravelの最新バージョンは10xでもうすぐに11xがリリースされます。しかし、Laravel 9xでartisan dbコマンドにオプションが増えていることについ最近気づいたので、忘れずにここで紹介します。

Laravel 9x以前から存在したdbコマンド

db:seed

まず、データベースにシードのレコードを作成するコマンドです。

$ php artisan db:seed

と実行すると、以下のDatabaseSeederがデフォルトで使用されます。


namespace Database\Seeders;

// use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;

class DatabaseSeeder extends Seeder
{
    /**
     * Seed the application's database.
     */
    public function run(): void
    {
        \App\Models\User::factory(10)->create(); // 10個のusersのレコードが作成されます

        // \App\Models\User::factory()->create([
        //     'name' => 'Test User',
        //     'email' => 'test@example.com',
        // ]);
    }
}

新規のプロジェクトでは、seedを実行する前には以下のようにmigrateを実行しましょう。

しかし、プロダクションではこんなに簡単に実行できると危ないと思いませんか?
ちなみに、上の実行の環境では、.envでAPP_ENVlocalで私の開発環境設定です。

APP_NAME=Laravel
APP_ENV=local
...

この値が、productionのときには、上のコマンドを実行すると、

と警告してくれて実行してOKかどうか質問されます。しかし、それでも実行は可能です。注意しましょう。

db:wipe

db:seedは実行する環境によっては危険なコマンドでしたが、こちらはもっと危険です。以下は、APP_ENV=localでの実行ですが、有無も言わさずにDBのテーブルをすべて削除してしまいます。

もちろん、APP_ENV=productionのときには、db:seedと同様に警告と確認のステップがあります。

Laravel 9xで登場したdbコマンド

今度は、Laravel 9xで追加されたコマンドたちです。先のDB操作のコマンドとは違って今度はどれもDBの情報をすぐにチェックできる有用なコマンドです。

db:monitor

現在のDBの接続数を表示するコマンドです。

db:show

DBの情報を表示するコマンドですが、Doctrine DBAL (doctrine/dbal)のパッケージがインストールされていないと、インストールするかどうかが問われます。YESとすると、必要なパッケージがインストールされます。

インストール完了後、再度実行すると、

db:table

こちらは、DBテーブルの情報を表示するコマンドです。まず、どのテーブルの情報が必要か尋ねられます。

usersを選択してENTERすると、

DBテーブルの項目などテーブルの情報を表示してくれます。これはとても便利ですね。

By khino