Laravel フレームワークでは、各 Eloquent モデルにはデフォルトで 2 つのタイムスタンプ フィールド (created_at と updated_at) が含まれています。これら 2 つのフィールドは、モデルの作成時間と更新時間を記録します。これの利点は、データの更新時刻を記録したり、作成時刻と更新時刻でソートするなどのいくつかの機能を実装するのに便利であることです。
ただし、シナリオによっては、これら 2 つのタイムスタンプ フィールドが必要ない場合もあります。たとえば、一部の古いデータベース テーブルにはこれら 2 つのフィールドがない場合や、データの作成時間と更新時間を記録する必要がまったくない場合があります。この場合、次の 2 行のコードをモデルに追加することで、created_at と updated_at をキャンセルできます。
public $timestamps = false;
これを実行すると、モデル内の created_at フィールドと updated_at フィールドがキャンセルされます。ただし、これら 2 つのタイムスタンプ フィールドをキャンセルすると、Laravel の組み込み関数の一部が失敗することに注意してください。たとえば、モデルを created_at フィールドと updated_at フィールドで並べ替えたり、データの作成時間と更新時間を自動的に記録したりすることはできません。
タイムスタンプ フィールドの 1 つだけ (created_at のみなど) をキャンセルする必要がある場合は、次のようにすることができます。
// 只取消 created_at const UPDATED_AT = 'updated_at';
このメソッドは、UPDATED_AT 定数を updated_at 文字列に割り当てます。デフォルトでは、UPDATED_AT の値は updated_at であるため、これを実行すると、created_at のみがキャンセルされます。
これらのタイムスタンプ フィールドをキャンセルした後、独自のデータの作成時間と更新時間を記録する必要がある場合は、それを実現するコードを手動で記述する必要があります。以下に例を示します。
// 在模型中实现自定义时间戳字段 protected $dateFormat = 'U'; protected static function boot() { parent::boot(); static::creating(function ($model) { $model->create_time = $model->freshTimestamp(); }); static::updating(function ($model) { $model->update_time = $model->freshTimestamp(); }); }
この例では、データの作成時間と更新時間を記録するために、モデル内に 2 つのフィールド create_time と update_time を定義します。同時に、$dateFormat 属性を定義して、デフォルトの時刻形式を変更します。 boot メソッドでは、イベントの作成と更新を通じて create_time と update_time に値を割り当てます。 freshTimestamp メソッドは最新のタイムスタンプを取得できます。
要約すると、created_at と updated_at をキャンセルするには、$timestamps = false をモデルに追加するか、UPDATED_AT 定数を変更します。これらのタイムスタンプフィールドをキャンセルすると、並べ替えや自動時刻記録など、Laravel の一部の組み込み機能に影響します。タイムスタンプ記録を自分で実装する必要がある場合は、コードを手動で記述して実行できます。
以上がlaravelでcreated_atをキャンセルする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。