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;
に変更しないとエラーになる。