質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Blade

Bladeとは、 PHPフレームワークのLaravelで使用することができるテンプレートエンジンです。テンプレートの継承とエスケープ機能を提供します。

Eloquent

Eloquentとは、PHPフレームワークのLaravelに最初から含まれているORM(Object-relational mapping:オブジェクト関係マッピング)です。

Q&A

解決済

2回答

1221閲覧

Laravelでスタッフ、エリア、部署のリレーション方法

bws

総合スコア98

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Blade

Bladeとは、 PHPフレームワークのLaravelで使用することができるテンプレートエンジンです。テンプレートの継承とエスケープ機能を提供します。

Eloquent

Eloquentとは、PHPフレームワークのLaravelに最初から含まれているORM(Object-relational mapping:オブジェクト関係マッピング)です。

0グッド

0クリップ

投稿2020/09/04 03:24

## テーブル
イメージ説明

## やりたいこと
以下のようにエリア>役職>スタッフというように表示したいです。
bladeで以下のようなかたちで出力できるようにコレクションで取得する方法はありますか?

PHP

1@foreach($areas as $area) 2 {{ $area->name }} 3 @foreach($area->positions as $position) 4 {{ $position->name }} 5 @foreach($position->staffs as $staff) 6 {{ $staff->name }} 7 @endforeach 8 @endforeach 9@endforaech

エリア1

役職1

  • スタッフ1
  • スタッフ2
  • スタッフ3

役職2

  • スタッフ4
  • スタッフ5
  • スタッフ6

エリア2

役職1

  • スタッフ7
  • スタッフ8
  • スタッフ9

役職2

  • スタッフ10
  • スタッフ11
  • スタッフ12

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

エリア>役職>スタッフ

ご自身が書かれたER図で結ばれた線の順番でしかリレーションは辿れません。

エリア と 部署を結ぶ線がないのですから、初めからできないことをあれこれ考えるのはよしましょう。

そうなると、前回の問題と同じアプローチをとるしかないのです。

投稿2020/09/04 03:54

編集2020/09/04 04:10
phper.k

総合スコア3923

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

bws

2020/09/04 06:34

いつもありがとうございます。できるのかできないのかわからないのが困るところです。
phper.k

2020/09/04 06:35

普通に線を辿っていけばいいことです。
bws

2020/09/04 06:37

おかげでリレーションはできることできないことの判断ができそうです!ありがとうございます!
guest

0

この場合だと、

AreaModelで、StaffModelに対してhasMany。
StaffModelで、PositionModelに対してbelongsTo。

投稿2020/09/04 03:33

kyoya0819

総合スコア10429

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

bws

2020/09/04 03:43

ありがとうございます。 Area::with('staffs.positions')->get(); で取得した場合に、エリア>スタッフ>部署という構造のコレクションになってしまいませんか? 取得する方法が悪いんでしょうか?
mikkame

2020/09/04 05:29

Area::with('staffs.positions')->get()したcollectをgroupByで処理したらできそうですね
bws

2020/09/04 06:35

コレクションを操作しないとダメみたいですね。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問