Laravel-admin PHP プログラミング

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

前回、【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, プログラミング

Copyright© Life.log , 2024 All Rights Reserved Powered by AFFINGER5.