😆

LaravelDB.com~操作方法と勘所を書いた〜(基本操作編)

2020/09/25に公開

laravelDB.com

テーブル設計(ER図)するだけで、Migrationファイルがポンって作成できるFreeの 「 テーブル設計&Migration作成 」 Laravel専用ツールです。
*2020-10-04にアップデートしValidationも生成されます。

基本操作(最新動画)

https://youtu.be/sHt5v4XOWbc

メイン機能

  • Migrationの自動生成
  • チームメンバーとの共有可能
  • CRUDコード(β版)の自動生成
  • CRUDコード(β版)でのValidation自動生成(テーブル設計に合わせて自動で生成)

利用について

個人/プログラミング学習者: 無料
企業/商用利用:paypal等の寄付・ウイッシュリストでの寄付・Twitter等のSNSでの応援投稿も可

用途

用途は開発者によってバラバラですね。
・Migrationのみ使う(ほとんどの人はここですかね)
・CRUDファイル全部(数%くらいの人)
・コード生成後、一部(Validationとか)をコピーして使う(結構な割合でいます)
・テーブル設計の共有(Team開発では使ってるようです)

◇操作方法(マニュアル)

1.テーブル作成

2.カラム作成

※使いやすくするポイント!! 「列を追加」ボタンを連打で必要な数だけ先に作ると便利!!

3.2020-09-24アップデートから使用可能

「 ENUM, UNSIGNED ] に対応、新規プロジェクトより表示されるようになります

以下はENUM、Doubleの入力してる例です。

「 UNIQUE, INDEX ] に対応、新規プロジェクトより表示されるようになります

外部キーの設定

外部キー制約を使用する場合( ※1対他、多対多などを分ける機能は無い)

4.ER図の保存

コントロールパネル**[Data:セーブ/ロード]**から移動します。

「クラウドに保存」or「ブラウザに保存」を選択できます。

この例では「クラウドに保存」を選択。

Save/Load機能 機能詳細
クラウドへ保存 アカウントに紐づきクラウドに保存します。
クラウドデータ一覧 保存したクラウド側のデータ一覧
ブラウザに保存 使用中のブラウザ「LocalStorage」に一時保存
ブラウザデータ一覧 localStorageに保存したデータ一覧

上記の「データ一覧」選択後、「 -- Data List -- 」の選択肢が表示されます。
そこに表示されるデータ項目を選択するとER図を復元します。

5.Migrationを生成

[ER図から出力]内の**Build [Migration]**ボタンをクリックしてダウンロードします!

Zipファイルを解凍してダウンロードファイルを確認。

【ER図をTeamでシェア】

テーブル設計をシェアする機能のことです。

1 [送信側:シェアData]作成

見せたい相手にIDを渡しておいて、変更があれば「Create a [Share ID]」ボタンを押すと毎度データ更新されることを知っておきましょう!

2 [送信側:シェアData] IDをコピー

ここでコピーしたIDを相手に知らせます。

3 [受信側:シェアData]読み込み

相手は送られてきた[シェアData]IDを貼り付けます。

4 「Read」ボタンをクリックしてデータを受信表示しましょう。

5.シェアデータの複製が完了!!

受信側にデータが入りました!受信側もそのデータを活用できるようになります。
チーム・メンタリング等のケースでも利用可能です。

※受信後は「別名を付けて保存しておくと良いでしょう!」

◇ リバースエンジニアリング(Migration → ER図)

フォルダにMigrationファイル(Schema::createのみ)一式集めZip圧縮したファイルをアップロードすることで、ER図へ変換(リバース)することが可能です。

Migrationファイル一式をZIP圧縮 → [ Reverse >>> ERD ]ボタンでアップロード
アップロード完了するとER図が表示されます。

Migration(ZIPファイルに一式纏めて) 機能詳細
[ Reverse >>> ERD ] Migrationファイル一式をフォルダに入れて、ZIP圧縮したファイルをアップロード

1.注意
以下Migrationファイル 「 Schema::create 」のみ現在は可能
※ Schema::create以外は対応検討中

Schema::create("テーブル名", function (Blueprint $table) {...}

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機能にアップデートが入ったので、β版機能に影響があるかもしれません。

  1. まずは複数のテーブルを簡単に作り「外部キーの接続」をして準備してください
    その後、右メニュー 「 [Data]セーブ/ロード 」 クリックすると以下画面が表示されます。
  2. 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の仕様で検討予定ですかね~~~かなり変わってるように思ったので。

◇LaravelDB.com サイト

laravelDB.com

◇Twitterアカウント

LaravelDB.com

ツイートページのURLを指定してください

以上

Discussion