mine19876293
@mine19876293 (ミッキー)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

アプリ 時刻表示 エラー laravel

解決したいこと

laravel,php,HTML/CSSで、勤怠管理アプリを作成中でデータベースに、挿入した、打刻時間の記録と、bladeの打刻時間の記録が、違うものとして、反映されていて、それで、現在、打刻したものが、過去に打刻したものに、現在、打刻したものと同じ時間で、bladeに表示されている現象が
起きています。過去に打刻時間の表示、現在打刻した、時間をそれぞれ、別々に表示するにはどうすればいいですか?

画像
スクリーンショット 2024-01-29 162024.png

スクリーンショット 2024-01-29 162032.png

GIT HUBのコード
https://github.com/ootaketakanori/portforio.git

自分で試したこと

WorkControllerのpublic function startWork(Request $request)に、 ボタンを押したときの時間を取得するために、 $startWorkTime = now();を記述

attendance.blade.php(日別勤怠ページ)

勤務開始:{{ $startWorkTime }}
このように記述。
0

3Answer

まず、こちらの勤怠管理アプリがどのようなもので、どのように作られているのか説明されたほうが分析の助けになります。
ここの回答者はあなたの開発したアプリに関しての知識はありません。ですので前提知識を理解しなければ回答が難しいところがあります。

例えば、

  • このアプリ、問題の機能はどういったものでしょうか?
  • 「現在打刻したもの」「過去に打刻したもの」どのようなデータで、どのように格納しているものでしょうか?

ひとまずこういった前提知識がない状態で推測すると、「勤務時間の列が全て同じ時刻になっている」という点を問題とされているのだろうと考えます。
viewを見ると1つの変数$startWorkTimeを表示しているので、全て同じ時刻になるのは納得がいく状況です。

attendance.blade.php
            @foreach ($entries as $entry)
            <tr>
                <td>名前: {{ $entry->user->name }}</td>
                <td>勤務開始:{{ $startWorkTime }}</td>
                <td>勤務終了:{{ $entry['endWork']  }}</td>
                <td>休憩時間:{{ $entry['breakTime'] }}</td>
                <td>勤務時間:{{ $entry[''] }}</td>
            </tr>
            @endforeach

データベースのstart_timeカラムのデータを表示することで解決するのでしたら、$entry->start_timeのように参照できるのではないでしょうか?

0Like

$startWorkTimeを挿入すると、全て同じ時刻になるのはなぜですか?

Q.このアプリ、問題の機能はどういったものでしょうか?
A:rest.blade.php(打刻画面)で、勤務開始、勤務終了、休憩開始、休憩終了、それぞれ4つの、
ボタンがあって、それを押すと、次の移動ページattendance.blade.php(日別勤怠ページ)に、
記録される、というものを作成中です。
Q.「現在打刻したもの」「過去に打刻したもの」どのようなデータで、どのように格納しているものでしょうか?

A:WorkControllerに、勤務開始ボタンを押したときのコード、打刻した時間をデータベースに記録するコ-ドです。

 {
     // ボタンを押したときの時間を取得
     $startWorkTime = now();
     // セッションに保存
     $this->saveTimestampToSession('startWork', $startWorkTime);
             // attendance テーブルにデータを挿入
     $attendance = Attendance::create([
         'user_id' => $userId, // ログインユーザーの ID を指定
         'action' => 'startWork',
         'date' => $currentDate,
         'start_time' => $startWorkTime,
         'end_time' => null,
         //初期値はNULL
     ]);```
0Like

$startWorkTimeにはnow()を設定しているので変数に代入した際の時刻が設定されるはずです。

他の方の回答のようにDBに格納した値を参照する必要があると思いますので$entry->start_timeを参照することで登録日時が表示されると思います。
foreachで繰り返しても同じ変数の値を参照しているので同じ値が表示されるはずです。

0Like

Your answer might help someone💌