【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
(現在の日付時刻)を格納するので何かしらの値を入れてあげれば更新されなくなります。
SQLの仕組みを利用
SQL文でのデータベース操作では、「カラム=カラム」とすることで現在格納されている値を再格納することができるのでこの仕組みを使って解決できました。
Laravelのデータベースクラスを使ってのSQL操作の場合、先ほどのSQL文を組み込むだけで更新されなくなります。
DB::update('UPDATE テーブル名 SET 更新したいカラム = 値 ,updated_at = updated_at WHERE 絞り込みたいカラム = 値');
Laravelのデータベースクラスを使ってのtimestampsは私はなぜかうまくいきませんでした。なのでこちらの記事の方法でtimestampsを実現していますので併せて参考にしてみてください。
おすすめ記事:timestampsに値が格納されない時の解決法
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。