Laravel-admin PHP プログラミング

【Laravel-admin】リレーション関係を持ったCRUD作成(1対1、1対多、多対多)

投稿日:2019年1月30日 更新日:

前回、【Laravel-admin】Laravel-adminで新規テーブルを作成しCRUD画面を追加する方法でLaravel-adminでテーブルのCRUD画面を作成しました。

単一のテーブルであれば、テーブル名の単数形のモデル・コントローラを作成しルートを追加すれば簡単に対象テーブルのCRUD画面を実装することができます。

Laravel-adminではリレーションシップで結ばれたテーブルであっても簡単に、リレーションを定義し編集画面を作成することが可能です。

リレーションシップについてほぼ知識なしの状態からLaravelを通じて学習したので、不足している部分をあるかもしれませんがご容赦ください!

日本語のドキュメントが少なく、かなり苦戦しましたが、以下の記事にむちゅくちゃ助けられました!

参考:Laravel-adminを使って実用的な画面を作る。(1対多のリレーションシップに対応)

今回の実装内容

■Laravel-adminを使用して一対一、一対多、多対多のリレーションシップに対応した以下の画面を作成します。

・一覧画面

・編集画面

・詳細画面

ソースコード

マイグレーションファイル

 

コントローラ
 

 

モデル

TestUser.php

Address.php

Family.php

Item.php

 

 

一覧画面

出来上がりの画面はこんな感じ↓

一覧画面の内容はgrid関数内に記述します。
一対一のリレーションに関しては公式のドキュメントをそのままです。
一対多と多対多のリレーションに関しては、Laravel-adminのソースコードを参考にしました。
 

編集画面

出来上がりはこんな感じ↓

■ユーザー情報タブ

■家族情報タブ

編集画面の内容はform関数内に記述します。

一対一、多対多はこちらも公式ドキュメントとLaravel-adminのソースコードを参考にしています。

一対多のリレーションに関してはこちらを参考にさせていただきました。

感想としてはとっても楽&実用的!

一対多のリレーションシップをもったテーブルのデータを流動的に増減させていくフォームを簡単に作成できます。

UIもいい感じ!

 

詳細画面

出来上がりはこんな感じ↓

ユーザー情報タブ

家族情報タブ

詳細画面の内容はshow関数内に記述します。

先述の参考サイトではBoxとTableを使用しているので、FormとTabを使用しました、

ただ、UI的にはEncore\Admin\Formの方が見栄えもいいし、無理してWidgetsのformを使うことはないかも…

機会があればForm以外のWidgetsを使用して実装したいと思います(コードもかなりへんぽこなので修正を行うかも…)

 

 

感想

日本語のドキュメントが少ないため中々手間取るところもありますが、数少ないドキュメントやソースコードを参考にすると、

リレーションシップに対応するCRUD画面に関してかなり実用的かつ簡単に実装することができそうです!

その他、一覧画面のソートやフィルターなどかなり多機能みたいなので色々と調べてみたいと思います。

おまけ

日本語化

config/app.phpの81行目辺りの「locale」を「en」から「ja」に変更するだけです。

また、app.php内でタイムゾーンの設定やファクトリーで作成するデータの言語設定もできるので必要であれば変更出来ます。

 

 

-Laravel-admin, PHP, プログラミング

関連記事

【Laravel】factoryを使用してテストデータを作成

factoryとは WEBアプリケーションのテストを行う際にテスト用のデータが必要になりますが、 テストデータ挿入用のSQLファイルを作成するのも時間がかかりますし、大量のデータで試験を行う場合はかな …

【Laravel-admin】Laravel-adminで新規テーブルを作成しCRUD画面を追加する方法

前回【Laravel-admin】PHPのライブラリ「Laravel-admin」のインストール方法でPHPのフレームワーク「Laravel」と管理画面用のパッケージである「Laravel-admin …

【SendGrid】SendGridでトランザクションテンプレート作成

はじめに 前回SendGridに登録を行いAPIKeyの作成を行いました。 関連記事:【SendGrid】SendGridについての概要 この記事ではSenGridのトランザクションメールのテンプレー …

【Laravel-admin】Laravel-adminでのRoles(役割)とpermission(権限)について

前回「【laravel-admin】Laravel-adminで新規テーブルを作成しCRUD画面を追加する方法」でテーブルを作成し画面を追加しました。 今回は作成したテーブルの操作画面をメニューを追加 …

メール送信におけるレピュテーションとは ~IP・ドメインを育てる!!~

Webシステムにおいて、何らかの契機でメール送信を行う機能は必要とされるケースが多くあります。 僕自身、関わった案件の中でメール送信機能を実装した経験がいくつかあります。 メール送信機能の実装に関して …