前提・実現したいこと
編集履歴を画面に表示する機能を実装しており。
Historyというテーブルには編集履歴の情報(detail,date)を格納していて、
その一つの情報dateが編集日時(CURRENT_TIMESTAMP)となっています。
そこでhtmlで表示する際、編集日時が一緒のレコードたちをまとめて表示したいのが今回実現したいことです。
####現状のソースコード
コントローラでは
php
1 $data=DB::table("History")->get(); 2 return view("detail",compact('data'));
detail.blade.phpでは、
html
1<div class="lists"> 2 @foreach($data as dt)<!--これだと毎回リストが作れる--> 3 <div class="list"> 4 <div class="item"> 5 <div class="data">{{dt->detail}}</div> 6 </div> 7 </div> 8 @endforeach 9</div
####実現したいこと
例えばレコード1,3,5のdateは全部6/28 13:00、レコード2,4は6/29 14:00の場合
「希望するHTMLの最終形態」として、以下のようにしたい
html
1<div class="lists"> 2 <div class="list"> 3 <div class="item"> 4 <!---レコード1のデータ---> 5 <!--レコード3のデータ---> 6 <!--レコード5のデータ--> 7 </div> 8 </div> 9 <div class="list"> 10 <div class="item"> 11 <!---レコード2のデータ---> 12 <!--レコード4のデータ---> 13 </div> 14 </div> 15</div
####現状のhtml(これでうまくいきました)
html
1<div class="lists"> 2<?php $prev=0;$temp=0;?> 3 @foreach($data as $dt) 4<?php 5 $temp=$dt->date; 6 if($temp!=$prev){ 7 if(!$loop->first){ 8 echo"</div> 9 </div>"; 10 } 11 echo "<div class='list'> 12 <div class='item'>"; 13 $prev=$dt->date; 14 }else{ 15 echo "{$dt->detail}" 16 } 17 ?> 18 @endforeach
最後こういう風に変えました、これでうまくいきましたが、少し強引な気がしなくもないです
回答2件
あなたの回答
tips
プレビュー