【SQL】updated_atを更新しない方法!Laravelのデータベースクラスの場合

この記事からわかること

  • updated_atカラムを更新しない方法
  • Laravelデータベースクラス使用の場合

index

[open]

\ アプリをリリースしました /

みんなの誕生日

友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-

posted withアプリーチ

Laravelを使ってアプリを制作中データベースの値を更新したけど更新日は変えたくない問題が発生しました。

今回はその解決法をまとめていきます。Laravel関係なくSQL文を使っての処理なら使えるので試してみてください。

データアップデート時に更新日を更新しない方法

今回の目的

timestamps(登録日と更新時を自動保存)のあるテーブルにデータをアップデート時に更新日を更新しないようにする

SQL文を構築してデータをアップデートする時、自動で更新日も更新されてしまいます。

UPDATE テーブル名 
SET 更新したいカラム = 値 

これを防ぐにはアップデート時に、更新日カラムに現在の更新日の値を入れ直せばOKです。もしくはnull値や別の値を入れ込んでもOKです。

UPDATE テーブル名 
SET 更新したいカラム = 値 ,updated_at = updated_at

timestampsは値格納時に未指定の場合にデフォルト値として定数CURRENT_TIMESTAMP(現在の日付時刻)を格納するので何かしらの値を入れてあげれば更新されなくなります。

Timestampsを組み込んだデータベーステーブル

SQLの仕組みを利用

SQL文でのデータベース操作では、「カラム=カラム」とすることで現在格納されている値を再格納することができるのでこの仕組みを使って解決できました。

Laravelのデータベースクラスを使ってのSQL操作の場合、先ほどのSQL文を組み込むだけで更新されなくなります。

DB::update('UPDATE テーブル名 SET 更新したいカラム = 値 ,updated_at = updated_at WHERE  絞り込みたいカラム = 値');

Laravelのデータベースクラスを使ってのtimestampsは私はなぜかうまくいきませんでした。なのでこちらの記事の方法でtimestampsを実現していますので併せて参考にしてみてください。

まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。

ご覧いただきありがとうございました。

searchbox

スポンサー

ProFile

ame

趣味:読書,プログラミング学習,サイト制作,ブログ

IT嫌いを克服するためにITパスを取得しようと勉強してからサイト制作が趣味に変わりました笑
今はCMSを使わずこのサイトを完全自作でサイト運営中〜

New Article

index