【 Laravel 】CRUD『 表示・登録・更新・削除 』機能をCODEを書かず自動作成（Beta版機能） 


# ◇Laravel DB.com を初めての人はこちらから


[**初めての人はこちらから>>** ](https://qiita.com/daisu_yamazaki/items/9f0dd73553367f8077f0) 

####基本操作説明（Youtube）
https://youtu.be/sHt5v4XOWbc

#####CRUD 操作説明（YouTube（DEMO））
https://t.co/jGVarMoXse


#Laravel DB.com は「 ER図 → CRUD生成 」までCODEを書かずに作成可能なツールです

以前にも書きましたが、Laravel DB.comでは「CRUD」のコードまで生成するようになりました。＼(^o^)／
**※但し、CRUD機能はまだベータ版です**

##私の開発環境
 - Laravel5.5~6/PHP7.2.1/MySQL5.6.38 （Mac: Chromeで確認）

##【 LaravelDB.comへ ログイン 】
[ LaravelDB.com ](https://laraveldb.com/)
**現在は「Googleアカウント」のみログイン可能**
※現在はGoogleアカウントを持っていない人は少ないですからね〜
<img width="800" alt="en.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104530/44a89fe7-10e9-785c-19c7-1fc6c691db0a.jpeg">


---


###【 LaravelDB.comの POINT！！ 】
ER図を作成していきますが**重要事項**があります！

**＜＜重要＞＞
主キーのAutoIncrementは どのテーブルも『 id 』 と固定すること！！**
<img width="800" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104530/f21527f4-a43d-26af-3580-c614f8a17d05.png">

LaravelのEloquentModel を便利に使うためには、どのテーブルも 『 id 』 と固定するのが吉です。
理由は**「 モデル名::find($id); 」**と便利に使う場合は 主キーのAutoIncrement 『 id 』 名にしておかないと動作しないからです（ Laravelを勉強してる人はなんとなく知ってることでしょうか ）。
※ laravelDB.comのCRUDでも生成されるファイルは**「 ○○○::find($id); 」**を使ってるためそ！
※ laravelに最初から入っているテーブル「user」「password_resets」は作成しないこと（migrate時に上書きしてしまいます）
※慣れれば簡単ですが、少しだけ慣れる時間は必要ですね。

---


###【 CRUDを生成してみる！  】
まずは、ER図を簡単に作ってみましょう！！
その後に右メニュー**「 ER図のLoad/Save 」**をクリックすると以下画面が表示されます。
<img width="800" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104530/3f0d39fd-a618-e6e0-5453-55c1cf227529.png">
CRUDを生成するボタンが新しく出来ています！！！
※まだデバッグが全て終わってないため「BETA」と書いてますが、クリックです！！！

---

###【 CRUD： 新しいプロジェクトを用意 】
最低限Laravelがインストールした状態 を準備します！
<img width="800" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104530/59cabead-808f-2837-f25a-1d25b907fd1e.png">
この時点ではまだLOGINは作らないように！

---

###【 CRUD： ダウンロードファイルを確認しましょう 】
Zip圧縮ファイルがダウンロードされるので、Zipを展開（解凍）して中を見てみましょう！
CRUDに必要なファイルが一式入っています。
<img width="1200" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104530/70f674ea-41da-f34c-6b49-2b65e585bcd9.png">
ダウンロードしたファイル（ 各フォルダ内のファイル ）を移動しましょう！


**【移行方法】**
**Macの場合：** 「Optionキー + ドラッグ＆ドロップ」 → 「結合」でフォルダの上書きではなく、結合になります。
**Winの場合：**「ドラッグ＆ドロップ」で結合できます。

※welcome.blade.phpはダウンロードしたファイルへのリンクが生成されているので、上書きしてください。

---

###【 CRUD： 配置しおわったら「 Migrate 」しましょう 】
DBや.env設定など最低限の設定が終わっていたら

```
php artisan migrate
```
で、テーブルを作成してください。

---

###【 完成： ブラウザで確認しましょう！ 】
http://localhost/ (URLは開発環境によって異なります) で確認しましょう！
画面の中央に今までなかったリンクが出来ています。あなたが作ったテーブルのCRUD画面へ遷移できますよ！！

welcome.blade.php
<img width="1200" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104530/3f429b3d-ffb7-9efc-9322-153dfac943ac.png">

作成されたindex/show/editの画面
基本的な処理が最初から出来てます！捗りそうですね！
<img width="1200" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104530/4250a77f-6b08-ec9e-6344-78e27e433b5c.png">

---

###Validationがスゴイ！ → テーブル設計に合わせて生成
例でざっくりテーブルを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">

---


### date,datetime型 → 入力フォー厶type="date"
- 画面表示側もtype='date'
- validation側もdateチェックが入ります。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104530/de8c3a0d-6e5d-84f6-bb9f-4dc74949838a.png" width="1000">

---


### ER図外部キー設定→JOIN自動生成 QueryBuilderをController側にコメントで用意
イチからQueryBuilderを使用して、JOINを書くのは大変です。ベースになる部分は生成してくれます。使用する場合はコメントになってるのでコメントを外し、上記に書かれてるコードのEloquentModelの1行をコメントして使います。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104530/bdf57b40-9fe6-7370-e02e-dfed740e1a1a.png" width="1000">

---

#### ※画面が古いままの場合(Cacheかも)
以下コマンドでCacheをクリアしてみましょう

```コマンド
php artisan cache:clear
php artisan config:clear
php artisan route:clear
php artisan view:clear
```
---



### 動作した後はコードを見ると良いでしょう
- Routing
- Controller
- Views
- Model
後は、自分で変更をいれていくだけですね。


---

### 日本から海外へ向けたアウトプット
laravelDB.com は日本人が作り、海外でも使われるプロダクトになることを願っております。

---


**【次の記事】**
[LaravelDB.com　更新テストデータ生成も可能になりました](https://qiita.com/daisu_yamazaki/items/57669e8fa2c256d85c95)

---

**Twitter： [LaravelDB.com](https://twitter.com/ErdLaravel)**

---

以上