始まったばかりのLaravelのプロジェクトでは、移行元のある案件なので既存のデータベースをそのまま使います。
というときに、既存のテーブルから Laravel の Eloquent Model クラスを自動生成したときの作業記録です
こちらのライブラリを追加いました(読み方・呼び方不明です)
https://github.com/reliese/laravel
composer でライブラリを追加
composer require --dev reliese/laravel
このとき、 killed
と表示されたらメモリ不足を疑ってみてください。
Dockerで開発環境を作っているならばこちらに書いた方法で対処できました。
Docker内でcomposer require したらkilledになったときの対応
https://qiita.com/makies/items/3e1064f17a18df750cad
パッケージを追加
AppServiceProvider に追記します
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Reliese\Coders\CodersServiceProvider;
class AppServiceProvider extends ServiceProvider
{
/**
* Register any application services.
*
* @return void
*/
public function register()
{
// 追記ここから
if ($this->app->environment() === 'local') {
$this->app->register(CodersServiceProvider::class);
}
// ここまで
}
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
//
}
}
設定ファイルを作成
設定ファイルが config/models.php
に生成されます。
configは一旦削除しておいたほうが良さそうです
php artisan vendor:publish --tag=reliese-models
php artisan config:clear
モデルファイル生成
php artisan code:models
DBにあるテーブルに対するModelファイルが生成されます。
デフォルトで app/Models
以下に生成されます。
config/models.php
で、出力先や親クラスなどを指定することができます。
生成されない場合
生成されない場合 DBのテーブルが存在しているかを確認しましょう
DBデータの永続化していない場合、DBコンテナを再起動するとデータベースが消えてしまいます。
migrationを流してから 再実行してください。
生成されるコード
- クラスプロパティ(=テーブルのカラム)
-
@property
でクラスのdocコメントに記述
-
- $table テーブル名
- $primaryKey プライマリキー
- $incrementing プライマリキーをインクリメントするかどうか
- timestamps タイムスタンプを自動更新するカラム
- $casts 型を自動キャストするカラム
- $dates Carbonに自動変換するカラム
- $fillable 書き込み可能なカラム