Laravel 3 でビルドされたアプリケーションを持っていますが、非常に奇妙なバグに遭遇しました。と の 2 つの日時フィールドを持つモデルがstart_time
ありend_time
ます。このモデルではタイムスタンプも有効になっているため、日時フィールドもcreated_at
あります。updated_at
このモデル内のオブジェクトの編集/更新を処理するコントローラー アクションがあります。このアクションを実行すると、フィールドを 1 回おきに変更するたびend_time
に、start_time
フィールドはフィールドの分と秒で上書きされupdated_at
ます。クレイジーに聞こえるかもしれませんが、デバッグ中に行ったことをいくつか示します。
まず、関数の使用から切り替えて、fill_raw($input)
何か変なことが起こった場合に備えて手動割り当てを使用し始めました。
$object->start_time = $start_time; $object->end_time = $end_time; $object->save();
echo
また、アクション全体にステートメントを追加して、save()
関数が呼び出された後にオブジェクトに格納された値を出力するステートメントなど、値がどの時点でも変更されていないことを確認しました。毎回期待通りの値です。ただし、ページがリダイレクトされるアクションの終了時とページのリロード時との間に、値がデータベースで変更されています。
この時点で、たとえば PHPMyAdmin で行を手動で追加すると、日時フィールドNOW
が設定されているが入力されてNOT NULL
いない場合に日時フィールドが自動入力されることがわかっているため、データベース側で何か奇妙なことがあるに違いないと考えています.しかし、そうは言っても、フィールドが空ではないことをすでに再確認しました。正しい値が含まれています。私はここで行き詰まっており、実際には別の視点を使用することができます.
編集:問題のコントローラー アクションのコピーへのリンクは
次のとおりです。echo
アクション全体を通して、入力データが正しく、予期しない方法で変更されていないことを確認するために使用したステートメントがあることを再度指摘します。発生している問題は、アクションの実行後にのみ表示されます。