【Laravel】Eloquent自動生成ライブラリeloquent-model-generatorの紹介

著者:杉浦

【Laravel】Eloquent自動生成ライブラリeloquent-model-generatorの紹介

krlove/eloquent-model-generator: Eloquent Model Generator
 LaravelのEloquentモデルをORM(オブジェクト関係マッピング)として自在動かすにはDB中の1テーブルに対して1モデルを定義、更にテーブル間の関係をメソッドに記述、とする必要があります。これはいつも同じことを記述する上、大量に必要となるため面倒です。eloquent-model-generatorはこれを解決します。
 eloquent-model-generatorはDB中の定義からEloquentモデルを生成するライブラリです。例によってcomposerでインストール、

composer require krlove/eloquent-model-generator --dev

 artisanから起動できます。基本は次です。

# モデル名を指定(テーブル名はモデル名の複数形)
php artisan krlove:generate:model User
# モデル名とテーブル名を指定
php artisan krlove:generate:model User --table-name=user

 これだけでリレーション、fillableをはじめとした様々なオプション付きのモデルが生成されます。
 テーブル名らをコピペして、コマンドを量産して叩くだけでも便利ですがconfigを使うとさらに便利になります。

<?php

return [
    'namespace' => 'App\Models', // namespaceの冠詞
    'base_class_name' => \Illuminate\Database\Eloquent\Model::class, // Modelの継承元
    'output_path' => '/full/path/to/output/directory', // Modelの出力先ディレクトリ
    'no_timestamps' => true, // created_at, updated_atを使わないか使うか
    'date_format' => 'U', // datetimeカラムからデータを取得する時のフォーマット。nullだとCarbon
    'connection' => 'other-connection', // 不明
    'backup' => true, // 元々あるモデルを壊さないか否か
];

 Eloquent共通の設定が出来ます。
 さらに、この記事を書いている時点(2019/06/10)のプルリクに全てのモデルを生成するコマンドがあります。
Create Command To Generate All Models by tprj29 · Pull Request #46 · krlove/eloquent-model-generator
 このプルリクにあるコマンドファイルをコ用いて、 artisan krlove:generate:all-modelsを実行すると、DB中のテーブルを全て読み取り、全てに対応するEloquentモデルが生成されます。
 さらにこれをartisan ide-helper:modelsartisan test-factory-helper:generateと組み合わせることで素のEloquentが更に充実します。

  • この記事いいね! (1)

著者について

杉浦 administrator