【Laravel】データ更新時に、updated_atの自動更新をしない方法
LaravelのEloquentモデルのupdateメソッドを使用して既存データを更新する場合には、updated_atの時刻が自動で更新されます。
$updateParams = ['column' => 'value'];
$model->update($updateParams);
これを自動更新しないようにするには、以下のように記述することができます。
$model->timestamps = false;
解決しない場合
上記を記述してもupdated_atが更新されてしまう場合には、MySQL側の「CURRENT_TIMESTAMP ON UPDATE」の設定で自動更新されている可能性があります。
自動更新の設定が有効になっているか確認するには、show columnsコマンドを使用して、Extra欄を確認します。
mysql -u root -p
show columns from [table_name]
migrationファイルを作成し、テーブル定義を変更して、自動更新させない方法もありますが、これが有効になっている意図がわからない場合には、下記方法で更新するのが良いのかなと思います。
DB::update(update [table_name] set [update_column] = [update_value], updated_at = updated_at where [condition]);
「updated_at = updated_at」のように記述することで、updated_atを更新させないようにできるようです。