😆

laravel DBからモデルファイルを自動生成

2024/04/17に公開

laravelで
データベースの情報をもとにモデルファイルを自動で作るライブラリを見つけたので使用方法について記載していきます。

一発で全てのテーブルのモデルファイルを作成することができますが、間違っていないか目視でも確認は必要です。

今回は

https://c-a-p-engineer.github.io/tech/2022/10/24/laravel-model-generation/

という記事を参考にしました。

まず最初に新規でプロジェクトを作成します。

laravelのバージョンは8にしてください。
9から上だとdoctrineとlaravelの互換性の問題でライブラリがうまく動作しないからです。

laravel8のプロジェクトを作成します。

composer create-project --prefer-dist laravel/laravel laravel_make_model "8.*"

ライブラリをインストール

composer require reliese/laravel --dev

modelのconfigファイルを作成

php artisan vendor:publish --tag=reliese-models

クリアコマンド

php artisan config:clear

composer.jsonのrequireに

 "doctrine/dbal": "^2.12"

を追記

composer updateを実行してインストール

composer update

mysqlで接続できるデータベースのモデルファイルを一括生成

php artisan code:models --connection=mysql

モデルファイルを一括で生成できるがもう串で確認は必要です。

コマンド実行時に出そうなエラーも記載しておきます。

DB_CONNECTIONが異なる場合

Database connection [DB] not configured.

DB_PORTが異なる場合

SQLSTATE[HY000] [2002] Connection refused

DB_HOSTが異なる場合

SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Name or service not known

DB_DATABASEが異なる場合

SQLSTATE[HY000] [1045] Access denied for user 'laravel_user'@'%' (using password: YES)

DB_USERNAMEが異なる場合

SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client

DB_PASSWORDが異なる場合

SQLSTATE[HY000] [1045] Access denied for user 'laravel_user'@'%'

Discussion