Laravel:月次のデータをMySQLに格納する方法

Laravel:月次のデータをMySQLに格納する方法

今回どうしようかと思案したパーツは集客に関する所です。

現在は月間を取得すればいいけど、将来サーバーを大きくできたら毎日の情報を蓄積するかもしれない。
(レコードがとんでもない数になるので多分しないと思うけど...。)

と言う事で、拡張性を確保しながら表示だけ月間とする場合どうしようか思案し実装しました。

日付データは何で保存する?

普通に考えれば次の2つの方法が浮上します。

  1. Timestamp型
  2. Date型

テーブルの更新(updated_at)はタイムスタンプで保存されています。
上記2つ以外にも、年と月のカラムを分け其々をIntegraで保存する事も考えられます。
ただ、今回は【〇年〇月度】程度の情報で良いので Date型 を使う事にしました。

Date型の場合登録に日付が必要なのです。

DBに 'Y-m' のみで保存したいと思っても 'd' の値を求められます。

#Viewにて

{{Form::input('month','hoge',null)}}

こんな感じで store や Update に送ると送られたデータは 'Y-m' になっています。

保存が出来ない!

そんな時はルールを設定し、’Y-m-01’ として値を保存します。

type='month'を使ってDate型の値を参照すると表示されない

先程のNullにdate型の値をそのまま読み込ませると年月表示で思った動作になりません。

--年--月

そんな時はviewに送った値をチョット加工してやります。

#配列
$hoge = array( 'datte' => '2019-06-01');

#Viewにて

{{Form::input('month','hoge',date('Y-m',strtotime($hoga['date'])))}}

#オブジェクトであれば date('Y-m',strtotime($hoga->date))

まとめ

LaravelではなくPHPのお話でしたが、いやぁ~便利だ。

\ 最新情報をチェック /

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください