【Laravel】データ更新時に、updated_atの自動更新をしない方法

【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を更新させないようにできるようです。

コメントを残す

CAPTCHA