• 締切済み

時間の加算をlaravelまたはphpで実現したい

こんにちは。Laravel初心者マークです。 色々、自分なり考えていますが、下記の所でつまずいています。 よろしくお願いします。 //やろうとしていること  データベースに入っている時間の累計(例 9:00+10:00+11:00=30:00)をview側で表示させたい //出来た事  contoroller側でDBからselectしてsumを使って集計($starts)しview側で集計値を表示させた。(出来た)ただし今回のソースでview側は記載していない。 //やりたいことその2 view側で表示させる範囲を決め(例 2022年4月16日~2022年5月1日) 集計値を表示したいので一旦、全件取得($e_all)してview側でループ集計して合計を足したい($e_time->start_time)をループして合計値を求める感じ。  因みにstart_timeは9:00のような時間が入っている。 //試したこと  上記、日付ループだと少し大変なので$i=0~5までのループとした。 //エラー表示 $total=0; 13:22:00 $total += $i; 13:22:00 $total += $i; 13:22:00 $total += $i; 13:22:00 $total += $i;  のように計算されずに文字列でそのまま吐き出している。 //補足  上記、出来た事に書いているコントローラー側で先にsumして  viewで表示した場合は、start_timeの合計値は時間で加算されている。 //DB側でなくview側で計算させる根拠  やりたいこと2で書いた通り、表示させたい範囲が変わるために(例2月、3月、4月)  範囲をview側で決めて日数でループする回数を決めたい //今回の解決したいこと  取り急ぎ、データベース側から全件取得したと仮定して  $i=0~5までのループ回分を文字ではなく時間の加算となるようにしたいです。 //Controller側で全件取得($e_all)とstart_time($starts)の合計値を取得   public function index() { $e_all = Kintai::all(); $starts = Kintai::selectRaw('SUM(start_time) as start')->groupby('date_time')->get(); return view('user.index',compact('e_all','starts')); } //view側で$e_allの中のstart_timeを取り出し加算  今回は,$startsは取っていない。 $total=0; @foreach($e_all as $e_time) @for($i=0;$i<5;$i++) {{ $e_time->start_time }} $total += $i; @endfor echo $total; //表示結果(文字で表示されている) $total=0; 13:22:00 $total += $i; 13:22:00 $total += $i; 13:22:00 $total += $i; 13:22:00 $total += $i; 以上よろしくお願い致します。

みんなの回答

回答No.1

https://www.jaga.biz/laravel/blade-php-tag/ これじゃないかな。。 <?php~?>の変わりに、@php ~ @endphp を使ってみようって、話。 ただ、どっちでもOKでもあるので、 元々のソースは、PHPではなく、View内だったってのが 原因じゃないかと。 =要するに、PHP命令じゃなくて、フロントコード だとすれば、画面にそのまま出たのも、それで正しい という結論になりますね!。 ってことで、解決したんじゃないかな?

関連するQ&A