##◇LaravelDB.com ?
Laravelのデータベース設計(ER図)するだけで、Migrationファイルがポンって作成できるFreeの**「 テーブル設計&Migration作成 」** ツールです。
*2020-10-04にアップデートしValidationも生成されます。
PHPカンファレンス2020で紹介(Youtube)
操作説明(Youtube)
####メイン機能
- Migrationの自動生成
- Validation(FormRequest)の自動生成
- チームメンバーとの共有可能
- CRUDコード(β版)の自動生成
- CRUDコード(β版)でのValidation自動生成(テーブル設計に合わせて自動で生成)
####利用について
個人/プログラミング学習者: 無料
企業/商用利用:paypal等の寄付・ウイッシュリストでの寄付・Twitter等のSNSでの応援投稿も可
####用途
用途は開発者によってバラバラですね。
・Migrationのみ使う(ほとんどの人はここですかね)
・CRUDファイル全部(数%くらいの人)
・コード生成後、一部(Validationとか)をコピーして使う(結構な割合でいます)
・テーブル設計の共有(Team開発では使ってるようです)
#◇操作方法(マニュアル)
####2.カラム作成
※使いやすくするポイント!! 「列を追加」ボタンを連打で必要な数だけ先に作ると便利!!
####3.2020-09-24アップデートから使用可能
######「 ENUM, UNSIGNED ] に対応、新規プロジェクトより表示されるようになります
以下はENUM、Doubleの入力してる例です。
######「 UNIQUE, INDEX ] に対応、新規プロジェクトより表示されるようになります
######外部キーの設定
外部キー制約を使用する場合( ※1対他、多対多などを分ける機能は無い)
####4.ER図の保存
コントロールパネル**[Data:セーブ/ロード]**から移動します。
Save/Load機能 | 機能詳細 |
---|---|
クラウドへ保存 | アカウントに紐づきクラウドに保存します。 |
クラウドデータ一覧 | 保存したクラウド側のデータ一覧 |
ブラウザに保存 | 使用中のブラウザ「LocalStorage」に一時保存 |
ブラウザデータ一覧 | localStorageに保存したデータ一覧 |
上記の「データ一覧」選択後、「 -- Data List -- 」の選択肢が表示されます。
そこに表示されるデータ項目を選択するとER図を復元します。
####5.Migrationを生成
[ER図から出力]内の**Build [Migration]**ボタンをクリックしてダウンロードします!
###【ER図をTeamでシェア】
テーブル設計をシェアする機能のことです。
####1 [送信側:シェアData]作成
見せたい相手にIDを渡しておいて、変更があれば「Create a [Share ID]」ボタンを押すと毎度データ更新されることを知っておきましょう!
####2 [送信側:シェアData] IDをコピー
ここでコピーしたIDを相手に知らせます。
####3 [受信側:シェアData]読み込み
相手は送られてきた[シェアData]IDを貼り付けます。
#####4 「Read」ボタンをクリックしてデータを受信表示しましょう。
#####3.シェアデータの複製が完了!!
受信側にデータが入りました!受信側もそのデータを活用できるようになります。
チーム・メンタリング等のケースでも利用可能です。
※受信後は「別名を付けて保存しておくと良いでしょう!」
##◇ リバースエンジニアリング(Migration → ER図)
フォルダにMigrationファイル(Schema::createのみ)一式集めZip圧縮したファイルをアップロードすることで、ER図へ変換(リバース)することが可能です。
Migrationファイル一式をZIP圧縮 → [ Reverse >>> ERD ]ボタンでアップロード
アップロード完了するとER図が表示されます。
Migration(ZIPファイルに一式纏めて) | 機能詳細 |
---|---|
[ Reverse >>> ERD ] | Migrationファイル一式をフォルダに入れて、ZIP圧縮したファイルをアップロード |
1.注意
以下Migrationファイル 「 Schema::create 」のみ現在は可能
※ Schema::create以外は対応検討中
2.注意
「LaravelDB.com」からZIPファイルをダウンロードしたファイルをそのままアップロードは出来ません。必ず、一度解凍したものをZIP圧縮しなおしてuploadしてください。
3.注意
macOS Catalinaのデフォルト圧縮では使用できないと報告が上がっています!!
『 macOS Catalinaによるzipファイルが解凍できない&ZIPアップロード読み込み不具合も解決あらゆる圧縮ファイルを解凍できる 「 The Unarchiver 」 』
https://tcd-theme.com/2019/10/the-unarchiver.html
をお使いください。
##◇ β版のCRUD/リレーションを使用したい場合(まだまだ開発段階の未知の機能)
<重要>この機能はテーブル名の末尾に「s」が無いとうまく動作しません。
※ENUMは必須・未入力のみ出力。
※intは型・必須・未入力のみ出力、sizeが未対応。
※2020-09-24Migrtion機能にアップデートが入ったので、β版機能に影響があるかもしれません。
- まずは、複数のテーブルを簡単に作り「外部キーの接続」をして準備してください!!
その後、右メニュー**「 [Data]セーブ/ロード 」**クリックすると以下画面が表示されます。
- BUILD [CRUD CODE] をクリック!!CRUD ファイル一式が生成されます
######【ポイント】
-
**Relation(Beta)**にチェックを入れておくとリレーションします。
-
BUILD [MIGRATION] でもリレーション(QueryBuilder)がコメントで生成されますよ。
####【このツールでのリレーションのポイント】
- JOINしてるテーブルの全ての項目を最初は表示します(同項目名が存在する場合、片方のみ表示します)。
- CRUDのコードが生成されたら、仕様に合わせてHTMLテーブルの項目を削除してください。
- リレーションは上記画像のように「チェック」を入れないと生成しないようにしています(Beta版のため)。
- Controller内にコードが生成されてますので、確認しておくと良いでしょう!
- 外部キーはこのツールでは非推奨としています(理由:Migrationの実行順序が重要でエラーになりやすい為)
##◇Validation → テーブル設計に合わせて生成
######Validationって地味に面倒ですよね、完璧では内容ですが、少しの手直しで使用できるなら便利そうです!!
上記Migrationの場合、以下Validationを生成します。
生成されたコントローラーのFormRequest(Migration書き出しの場合)やcreate(),edit()(CRUD書き出しではコントローラーに直接記述してあります)にはこういったvalidationが挿入されます。
{{old('name')}} → 入力項目を補完(CRUD:β版を使用した場合に生成されます)
validationで未入力等ではじかれた場合、入力した文字を消さずに表示します。
####ベータ版のCRUD/リレーションの利用シーン
上記のようにβ版ではありますが、全てを利用するというよりは、コードを生成して、必要な部分だけ使うのも良いと思います。(実際にそういったケースを耳にしました〜)
##◇LaravelDB.com 対応カラム一覧
tinyIncrements
mediumIncrements
smallIncrements
bigIncrements
increments
mediumInteger
smallInteger
bigInteger
tinyInteger
integer
unsignedInteger (2020-09-24対応)
unsignedTinyInteger (2020-09-24対応)
unsignedSmallInteger (2020-09-24対応)
unsignedMediumInteger (2020-09-24対応)
unsignedBigInteger (2020-09-24対応)
decimal
double
float
enum (2020-09-24対応)
geometryCollection
geometry
jsonb
json
char
longText
mediumText
text
multiLineString
lineString
string
multiPoint
multiPolygon
point
polygon
binary
nullableTimestamps
timestamps (2020-09-24対応)
softDeletes (2020-09-24対応)
dateTime
timestamp
time
year
date
#◇そもそも、なんで作ったの?
私は学校でプログラミング(サービスを作る基本)を教えていて、テーブル設計している学生がその場にいて
「テーブル設計して、そこからMigrationファイル作成して、コードをイチから書いて・・・」普通の作業ではあるんですが、何故か「その時は疑問を感じました」、ER図書いたらMigrationファイル生成したら便利だよね~。
何割かの開発者は喜んでくれるのでは?と思ったのがキッカケでした。
特に「テーブル設計は保存可能」なので、前回作ったテーブル設計から新しい設計を複製できるのは嬉しい機能です。設計してMigration or CRUDコード書き出してができるので、「設計して→コード書いて」という往復作業が無くなるので、是非使ってほしいと思います。
##今後の展開
2020-09-24以降からは「Migration」を軸にアップデートしていきます
なぜ、↑そう思ったか?
良かれと思った機能が意外に余計だった。。。よくあるパターンですね。
テーブル名に"t_","m_"とかトランザクション・マスターテーブルなどがテーブル名で分かるようにした場合に、自動で「timestamps」「softDeletes」などを挿入する機能が逆に「解りにくくさせていた」という事があります。今回のアップデートで廃止いしたのでご安心ください(余計なことはしません(^^))。
やはりシンプルがベストなんですよね。今はいかに「シンプルにするか」だけ考えてアップデートを考えています。
※必要な機能はどうやって複雑にせずに追加するか?など、悩みが楽しくてしょうがありません。
※CRUD(β版)機能のアップデートはどうなるか未定(Laravel7までは動作確認ずみ)
※Laravel8移行のLTSの仕様で検討予定ですかね~~~かなり変わってるように思ったので。
#最後に
ぜひ、応援していただければと存じます。
PHP開発者・Laravel開発者の一助に慣れば幸いです。
#◇LaravelDB.com サイト
laravelDB.com
#◇Twitterアカウント
LaravelDB.com
#◇ Youtubeチャンネル
「遅咲きエンジニア」MicrosoftMVP 山崎
https://www.youtube.com/channel/UCmMFmjhf1BXB1tlLcbkVRrg
以上