Laravelのモデルクラスの生成
LaravelでEloquentを利用するには、モデルクラスを作成する必要があります。
モデルクラスは、「app/Models」配下に配置されているファイルになります。
モデル名は、単数形になります。
単数形でモデルを作成すると、自動的に複数形のテーブルを利用する事ができます。
php artisan make:model Book
上記の例だと、Bookというモデル名で、booksというテーブルを扱うことが出来るということです。
もっと長い名前ですと、
BookDetailなどのパスカルケースの場合、
book_detailsという名前のスネークケースのテーブルで利用することになります。
モデル作成時に他のクラスも生成したい場合
モデル作成時に他のクラスも生成したい場合は、オプションを利用します。
# モデルと一緒にマイグレーションファイルを生成したい場合
php artisan make:model Book --migration
# モデルと一緒にFactoryクラスを生成
sail php artisan make:model Book1 --factory
# モデルとと一緒にSeederクラスを生成
sail php artisan make:model Book2 --seed
# モデルと一緒にControllerクラスを生成
sail php artisan make:model Book3 --controller
# モデルと一緒にControllerリソースクラス、フォームリクエストクラスを生成
sail php artisan make:model Book4 --controller --resource --requests
# モデルと一緒にPolicyクラスを生成
sail php artisan make:model Book5 --policy
# モデルと一緒にマイグレーション、ファクトリ、シーダ、コントローラを生成
sail php artisan make:model Book6 -mfsc
# モデルと一緒にマイグレーション、ファクトリ、シーダ、ポリシー、コントローラ、フォームリクエストを生成する短縮形
sail php artisan make:model Book7 --all
# 例えば、下記の様に省略することも出来ます。
php artisan make:model Book11 -f #factory
php artisan make:model Book12 -s #seeder
php artisan make:model Book13 -c #controller
php artisan make:model Book14 -m #migration
で、こんなの覚えられないので、ヘルプを見る。
sail php artisan make:model -help
そうすると、まだまだコマンドがあることがわかります。
または、
Illuminate\Database\Eloquent\Modelクラスを拡張しているので、ここを見ればいいです。
コマンドはまだまだありますね!
sail php artisan make:model Book8 --test
sail php artisan make:model Book9 --pest
sail php artisan make:model Book10 --api
sail php artisan make:model Book11 --pivot
Laravelのモデルクラスの生成(2)
規約外のテーブル名を指定したい場合
規約外のテーブル名を指定したい場合は、Modelのtableプロパティを設定します。
例えば、Book6というモデル名にした場合、
book6sというテーブル名になってしまいます。
だけど本当はbook6という名前にしたい場合とかは、Modelを変更します。
protected $table = 'books6';
これでbook6テーブルが作成できます。
主キーを変えたい場合
protected $primaryKey = 'test_id';
モデルのIDは通常は自動増分しますが、自動増分したくない場合は下記を指定します。
public $incrementing = false;
また、整数じゃない場合は、タイプを変更します。
protected $keyType = 'string';
主キータイムスタンプを変更したい場合
Eloquentではデフォルトでcreated_atカラムとupdated_atカラムがあることが想定されます。
created_at、updated_atカラムを利用したくない場合はこちらを指定します。
public $timestamps = false;
タイムスタンプの保存に使用するカラム名をカスタマイズする必要がある場合はこちらを指定します。
const CREATED_AT = 'creation_date';
const UPDATED_AT = 'updated_date';
データベースの接続先を変えたい場合
protected $connection = 'sqlite';