役立つ情報
登録日: 2025-02-02   最終更新日: 2025-03-19

Laravel の モデルで created_at や updated_at カラムがないテーブルの場合

Laravel の Eloquentモデルで created_at や updated_at が存在しないテーブルを扱う場合、以下の方法で対応できます。

方法1: $timestamps = false を設定する

Eloquent モデルで created_at や updated_at を無効化する場合、モデル内で $timestamps = false を設定します。 この設定により、Eloquentは created_at や updated_at を自動的に管理しなくなります。

例:app\Models\Sample.php


use Illuminate\Database\Eloquent\Model;

class Sample extends Model
{
    public $timestamps = false; // タイムスタンプを無効化
}

方法2: $timestamps = true のまま updated_at だけ無効化する

created_at は管理しつつ、updated_at だけ無効化したい場合は、const UPDATED_AT = null; を追加します。

例:app\Models\Sample.php


use Illuminate\Database\Eloquent\Model;

class Sample extends Model
{
    const UPDATED_AT = null; // updated_atのみ無効化
}

方法3: マイグレーションで timestamps() を使わない

テーブルを作成するときに timestamps() を使わず、created_at だけ定義する方法もあります。


Schema::create('samples', function (Blueprint $table) {
    $table->id();
    $table->string('name');

    // updated_at は作らない
    $table->timestamp('created_at')->nullable();
});

Copyright 役立つ情報.net