こちらの質問の続きになります。
Laravelでスタッフのエリアごとに分類して出力する方法
テーブル
やりたいこと
以下のように部署→エリア→スタッフというようなリストを表示したいです。
<部署1>
【東】
・スタッフ1
・スタッフ2
【西】
・スタッフ3
・スタッフ4
<部署2>
【東】
スタッフ5
スタッフ6
【西】
スタッフ7
スタッフ8
・・・
わからないこと
どのようにリレーションすれば実現できるかわかりません。
・リレーション次第で実現できるのか。
・コントローラーで取得したコレクションを出力しやすいように操作するのか。
if文など使わない方法があれば教えていただけないでしょうか?できないという回答でもありがたいです。よろしくお願いします。
コード
PHP
1<?php 2 3namespace App; 4 5use Illuminate\Database\Eloquent\Model; 6use App\Dept; 7 8/** 9 * Staff 10 */ 11class Staff extends Model 12{ 13 public function depts() 14 { 15 return $this->belongsToMany(Dept::class); 16 } 17}
PHP
1 2<?php 3namespace App; 4 5use Illuminate\Database\Eloquent\Model; 6use App\Staff; 7 8/** 9 * Dept 10 */ 11class Dept extends Model 12{ 13 public function staffs() 14 { 15 return $this->belongsToMany(Staffs::class); 16 } 17}
PHP
1class deptController extends Controller 2{ 3 public function index() 4 { 5 $depts = Dept::with(['staffs'])->get(); 6 7 return view('depts/index', [ 8 'depts' => $depts, 9 ]); 10 } 11}
PHP
1//views/depts/index.blade.php 2 3 <table class="table table-condensed table-striped"> 4 <th>部署名</th> 5 <th>所属スタッフ</th> 6 <tbody id="sort_items"> 7 @foreach ($depts as $dept) 8 <tr id="item_{{ $dept->id }}" class="sort_item"> 9 <td>{{ $dept->name }}</td> 10 <td> 11 // ここに東西で分けてスタッフを表示したい 12 {{ $dept->staffs->implode('name') }} 13 </td> 14 </tr> 15 @endforeach 16 </tbody> 17 </table>
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/03 01:38
2020/09/03 02:34
2020/09/03 02:37 編集
2020/09/03 02:46