Laravel

[Lravel8]モデルを自動生成するときにfillableも自動でお願いします

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

 

-Laravel

© 2022 青い空とコーヒーと