サービスリリースから半年「 LaravelDB.com 」現状＆機能まとめ


#◇LaravelDB.com知ってます？
Laravelのデータベース設計（ER図）するだけで、MigrationファイルやCRUDのソースコードがポンって作成できる無料の**「 超爆速プロトタイプ作成 」** ツールです。
※Migrationの基礎知識やテーブル名に"s"を付けるなどLaravelのルールを知ってることが前提条件
<img width="400" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104530/f21527f4-a43d-26af-3580-c614f8a17d05.png">

##さくっとどんなものか知りたい人用DEMO動画
https://youtu.be/sHt5v4XOWbc

##LaravelDB.comを１年半運営してみての反省
https://youtu.be/NbganVQJgmU


**2020-09-22以降からは「Migration」を軸にアップデートしていきます**
※CRUD機能のアップデートはどうなるか未定（Laravel7までは動作確認ずみ）


###メイン機能
- Migration＆CRUDコード(ベータ版) の自動生成
- CRUDコード(ベータ版) でのValidation自動生成（テーブル設計に合わせて自動で生成）
- チームメンバーとの共有可能
- リレーション（JOIN）自動生成



#◇そしてサービスリリースから６ヶ月
**世界で800名(2020年8月末現在で900名)の登録者がありました。**
これが多いか少ないかは私にはわかりませんが、よく使っていただいてるコアユーザーはいるようです。ありがとうございますm(_ _)m


GoogleAnalytics 地図画像
<img width="400" alt="SnapCrab_NoName_2020-5-11_12-35-59_No-00.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104530/54a3d916-3e48-53cb-caf6-519a6c7ad46d.png">

###日本からのアクセスも多く上位３位は、
1. 東京
2. 大阪
3. 神奈川
4. 福岡
5. 名古屋

###国、海外からのアクセスが多い順
1. 日本
2. アメリカ
3. インド
4. イギリス
5. ベトナム

の順です。
※ここらへんは時期によって変動があります（一時期トルコが多かったですね。）。

###要望は少しもらってます
enum対応しました
~~enumの対応や、いくつか要望はいただいてます。
enumなどはCRUDコード生成時のValidationの部分が少し難しいな～と感じてるのですが、
Migration書き出し機能だけに限定すればValidation問題は無いので、Migrationにenumはスグ付けれるなとか。細かい部分でいろいろあります。
超爆速プロトタイプツールと銘打ってるので、細かい仕様は徐々に対応でしょうか、お許しください。
※実際は本業が今コロナの影響もあり、作業（本業が先生なので資料作成とか動画とか）量が増えてるので、中々着手できないってのもあります。~~

###用途
開発者によってバラバラなようです。
・Migrationの書き出し
・CRUD全部
・コード生成後、一部をコピーして使う
・テーブル設計の共有

###なんで作ったの？
ページ下部に「◇Laravel専用ツールなんで作ったの？」があるので読んでいただければ幸いです。

##＊運営費はどうしてるの？
paypay/Paypalの寄付が100%です（サイトトップページフッターに設置してあります。）
※LaravelDB.comを使ってみた一般の有志の方々からの寄付が偶に入ってくるので、それで運営しております。
　これは本当に助かっておりますm(_ _)m。
※PayPayのQRは２週間過ぎると変わるようで、その度にQRコードの差し替えが面倒で困ってます。


##◇操作（最新動画！！） 
[**YouTubeで操作方法を見る**](https://youtu.be/sHt5v4XOWbc)
https://youtu.be/sHt5v4XOWbc

####操作説明（Youtube）
https://youtu.be/sHt5v4XOWbc
[![IMAGE ALT TEXT HERE](http://img.youtube.com/vi/sHt5v4XOWbc/0.jpg)](https://youtu.be/sHt5v4XOWbc)
※ブラウザ画面は海外の言語設定だと「英語表記」されるようになっています。


##◇アップデート「 UNIQUE, INDEX, ENUM, UNSIGNED ] 対応（2020-09-22以降）
**2020-09-22以降に作成した、新規プロジェクトより表示されるようになります**
以下はENUM、Doubleの入力してる例です。
<img width="800" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104530/53d1b651-914e-9c49-9fe4-4e006d875ef9.png">
![SnapCrab_No-0043.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104530/aa59f48d-6663-84c9-6e26-d8029687629f.png)




##◇リレーション自動生成（2020-07-10以降は新画面）
今まで、外部キー制約の機能のみ実装されていましたが 2020年03月04日から「 リレーション（JOIN） 」が生成できるようになりました。

1. まずは、ER図を簡単に作ってみましょう！！
その後、右メニュー**「 [Data]セーブ/ロード 」**クリックすると以下画面が表示されます。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104530/81abee9e-f7c8-74f7-2dd6-759fb7319135.png" width="1000">

2.  **BUILD [CRUD CODE]** をクリック！！CRUD ファイル一式が生成されます！！

######【ポイント】

 - [x] **Relation(Beta)**にチェックを入れておくとリレーションします。


 - **BUILD [MIGRATION]** でもリレーション(QueryBuilder)がコメントで生成されますよ。




####【リレーションのポイント】
- JOINしてるテーブルの全ての項目を最初は表示します(同項目名が存在する場合、片方のみ表示します)。
- CRUDのコードが生成されたら、仕様に合わせてHTMLテーブルの項目を削除してください。
- 中間テーブルなどに有効です。
- リレーションは上記画像のように「チェック」を入れないと生成されません。
- Controller内にコードが生成されてますので、確認しておくと良いでしょう！
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104530/cd34d354-0745-ca7b-d667-2dfdcf745477.png" width="1000">

プロトタイプ（ベースになるコードを生成してくれる）には十分すぎる機能ですね。
※外部キーは非推奨としています（理由：Migrationの実行順序が重要でエラーになりやすい為）

##◇Validationがスゴイ！ → テーブル設計に合わせて生成
######Validationって地味に面倒ですよね、これかなり助かります！！

※ENUMは必須・未入力のみ出力。
※intは型・必須・未入力のみ出力。


例でざっくりテーブルをER図で書いてみました。
以下"t_gsusers"テーブルを中心に見ていきます。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104530/526c187f-fb1e-02b7-85a3-e081c0c77e50.png" width="1000">

生成されたコントローラーのcreate(),edit()にはこういったvalidationが挿入されます。

```php:TGsusersController
            $this->validate($request, [
				"name" => "required|max:128", //string('name',128)
				"lid" => "required|max:128", //string('lid',128)
				"lpw" => "required|max:128", //string('lpw',128)
				"m_department_id" => "required|integer", //integer('m_department_id')
				"m_position_id" => "required|integer", //integer('m_position_id')
				"m_prefectures_id" => "required|integer", //integer('m_prefectures_id')
				"m_kanri_id" => "required|integer", //integer('m_kanri_id')
				"m_lifeflg_id" => "required|integer", //integer('m_lifeflg_id')
				"m_test_id" => "required|integer", //integer('m_test_id')

            ]);
```

#### {{old('name')}} → 入力項目を補完
validationで未入力等ではじかれた場合、入力した文字を消さずに表示します。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104530/d61dbd53-0e46-7dff-5028-ff07b22e71e8.png" width="1000">



#◇チーム共有機能（他のメンバーとER図を共有）
この機能を使えば「オンライン上でテーブルの設計が共有でき」CRUDが簡単に生成できることでしょう。

###【シェアData「送信側」】
テーブル設計をシェアする機能のことです。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104530/90ce9198-89b9-b9eb-57e2-727286c07ba8.png" width="1000">


####1 [シェアData]作成
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104530/9cb3cd6b-cff6-84a3-4f02-82fae7eff865.png" width="1000">
見せたい相手にIDを渡しておいて、変更があれば「Create a [Share ID]」ボタンを押すと毎度データ更新されることを知っておきましょう！

####2 [シェアData] IDをコピー
ここでコピーしたIDを相手に知らせます。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104530/617c6552-5c2f-7b97-18ea-b70a5f979958.png" width="1000">



### 【シェアData 「受信側」】
#### 1 [シェアData]読み込み
相手は送られてきた[シェアData]IDを貼り付けます。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104530/084d4a23-b8a6-0593-6f36-b4fc9cbe5c9f.png" width="1000">

#####2.「Read」ボタンをクリックしてデータを受信表示しましょう。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104530/2506b188-2dfe-f55b-a78e-9ef788b8b558.png" width="1000">

#####3.シェアデータの複製が完了！！
受信側にデータが入りました！受信側もそのデータを活用できるようになります。
チーム・メンタリング等のケースでも利用可能です。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104530/31739f72-725f-0845-87b6-05278eb6c813.png" width="1000">
※受信後は「別名を付けて保存しておくと良いでしょう！」



#◇Laravel専用ツールなんで作ったの？
そう、お察しの通り、制作者は私1人です(^^)
そもそも、学校で教えていて、テーブル設計している学生がその時いて
「テーブル設計して、そこからMigrationファイル作成して、コードをイチから書いて・・・」普通の作業ではあるんですが、何故か「その時は疑問を感じたんですね」、ER図書いたらMigrationファイル生成したら便利だよね～。何割かの開発者は喜んでくれるのでは？と思ったのがキッカケでした。
個人の「研究開発」アプリケーションなので、商用のようなキレイな画面ではありませんが、用途にあった使い方が分かればとても便利になるはずです。
特に「テーブル設計は保存可能」なので、前回作ったテーブル設計から新しい設計を複製できるのは嬉しい機能です。設計してMigration or CRUDコード書き出してができるので、「設計して→コード書いて」という往復作業が無くなるので、是非使ってほしいと思います。
※応援メッセージも受け付けております(^^) もっと頑張れるかも！！

# Youtubeチャンネル
[「遅咲きエンジニア」MicrosoftMVP 山崎](https://www.youtube.com/channel/UCmMFmjhf1BXB1tlLcbkVRrg)
https://www.youtube.com/channel/UCmMFmjhf1BXB1tlLcbkVRrg

#◇LaravelDB.com 解説ページ一覧＆対応カラム一覧
#####操作手順『 Laravel DB.com 』
[https://qiita.com/daisu_yamazaki/items/9f0dd73553367f8077f0](https://qiita.com/daisu_yamazaki/items/9f0dd73553367f8077f0)


#◇「動かして学ぶ！Laravel開発入門(翔泳社)」本だしました。
https://www.amazon.co.jp/dp/B08TBF3FQS/


#◇LaravelDB.com サイト
[laravelDB.com](https://laraveldb.com)

#◇Twitter:laravelDB.com
[LaravelDB.com](https://twitter.com/ErdLaravel)

---

以上