Laravel8でやりました。
モデル(Model)の生成は下記でできますが、fillableを転機するのが、カラムが多くて面倒。
php artisan make:model テーブル名
色々と調べていると、このようなものがあるらしい
krlove/eloquent-model-generator: Eloquent Model Generato
参考サイト:https://oki2a24.com/2019/06/06/generate-model-from-existing-database-in-laravel-5-5/
これでインストール
composer require krlove/eloquent-model-generator --dev
あ、その前にこれでDBにテーブルを作っておいてね!
php artisan make:migration create_テーブル名(複数形)_table
んで、これでModelを作ると
php artisan krlove:generate:model モデル名(キャメル&複数形でない)
class モデル名 extends Model { /** * The "type" of the auto-incrementing ID. * * @var string */ protected $keyType = 'integer'; /** * @var array */ protected $fillable = ['カラム名1', 'カラム名2', 'カラム名3', 'カラム名4', 'カラム名5',//自動で生成 Automatically generated }
ちなみに、app直下に自動生成されます。
これをModelsディレクトリに生成させたい時は、config/eloquent_model_generator.phpファイルを作って下記を入れると、いけるようだけど、自分の環境ではエラーになる。。。
<?php return [ 'model_defaults' => [ 'namespace' => 'App\Models', 'base_class_name' => \Illuminate\Database\Eloquent\Model::class, 'output_path' => '/Models', // appからの相対パス 'no_timestamps' => true,// created_at, updated_atを使わないか使うか 'date_format' => 'U', 'backup' => true, ], ];
こんなエラーで怒られる
ErrorException mkdir(): Read-only file system at vendor/krlove/eloquent-model-generator/src/Generator.php:73 69▕ } 70▕ } 71▕ 72▕ if (!is_dir($path)) { ➜ 73▕ if (!mkdir($path, 0777, true)) { 74▕ throw new GeneratorException(sprintf('Could not create directory %s', $path)); 75▕ } 76▕ } 77▕
まぁ、生成後にModelsに移動させるだけだから、自分はeloquent_model_generator.phpを使いません!キッパリ
でもどこがおかしいかわかる人はおせえて〜
!!!注意!!!
app直下に作られたモデルをModelsに移動したら各モデルのnamespaceを
namespace App;
から
namespace App\Models;
に変更しないとエラーになる。