30
27

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

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

Last updated at Posted at 2020-09-24

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

image.png

PHPカンファレンス2020で紹介(Youtube)

操作説明(Youtube)

https://youtu.be/sHt5v4XOWbc
IMAGE ALT TEXT HERE

####メイン機能

  • Migrationの自動生成
  • Validation(FormRequest)の自動生成
  • チームメンバーとの共有可能
  • 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」ボタンをクリックしてデータを受信表示しましょう。

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

  1. まずは、複数のテーブルを簡単に作り「外部キーの接続」をして準備してください!!
    その後、右メニュー**「 [Data]セーブ/ロード 」**クリックすると以下画面が表示されます。
  1. 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

以上

30
27
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
30
27

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?