0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

laravelのORMを使うときにDBのtimestampを保存する方法

Posted at

こんにちは。virapture株式会社でCEOしながらラグナロク株式会社でもCKOとして働いている@mogmetです。

最後に、ワンナイト人狼オンラインというゲームを作ってます!よかったら遊んでね!

最近忙しぎて全然更新できてないのでさらっとトラブルシューティングメモを残します。

今回はlaravelでMySQLのcreate/updateなどをするときに、DBサーバ側ののtimestampをレコードに保存する方法を紹介します。

結論

結論から言うと答えはここにありました。

そして答えのコード。

$attributes['updated_at'] = DB::raw('CURRENT_TIMESTAMP');

意外とサクッと出てこなったのでメモです。

背景

よくある実装だと現在時刻を入れるのに

$attributes['updated_at'] = Carbon::Now();

みたいなのをよく見かけますが、これをやってしまうと実行するサーバ側のtimestampが入ってしまいます。
これは実行側の時間に依存しておりDBとの整合性が取れなくなる可能性があるので非常に危険です。

そのためデータのアクションを起こしたという時刻を入れる場合はDBの時間を入れるのが慣例なのですが、laravelでのやりかたが全然ググっても出なかったのでメモしました。

まとめ

DBの時間を入れるときは DB::raw('CURRENT_TIMESTAMP') を使おう!

最後に、ワンナイト人狼オンラインというゲームを作ってます!よかったら遊んでね!

他にもCameconOffcha、問い合わせ対応が簡単にできるCSmartといったサービスも作ってるのでよかったら使ってね!

また、チームビルディングや技術顧問、Firebaseの設計やアドバイスといったお話も受け付けてますので御用の方は弊社までお問い合わせください。

ラグナロクでもエンジニアやデザイナーのメンバーを募集しています!!楽しくぶち上げたい人はぜひお話ししましょう!!

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?