Heim  >  Artikel  >  PHP-Framework  >  So brechen Sie „created_at“ in Laravel ab

So brechen Sie „created_at“ in Laravel ab

PHPz
PHPzOriginal
2023-04-21 10:06:19959Durchsuche

Im Laravel-Framework enthält jedes Eloquent-Modell standardmäßig zwei Zeitstempelfelder, „created_at“ und „update_at“. Diese beiden Felder zeichnen die Erstellungs- und Aktualisierungszeit des Modells auf. Dies hat den Vorteil, dass die Aktualisierungszeit der Daten bequem aufgezeichnet und einige Funktionen implementiert werden können, z. B. Sortieren nach Erstellungszeit und Aktualisierungszeit usw.

In einigen Szenarien benötigen wir diese beiden Zeitstempelfelder jedoch möglicherweise nicht. Beispielsweise verfügen einige alte Datenbanktabellen möglicherweise nicht über diese beiden Felder oder wir müssen die Erstellungs- und Aktualisierungszeit der Daten überhaupt nicht aufzeichnen. In diesem Fall können wir „created_at“ und „update_at“ löschen, indem wir die folgenden zwei Codezeilen zum Modell hinzufügen:

public $timestamps = false;

Dadurch werden die Felder „created_at“ und „update_at“ im Modell gelöscht. Es ist jedoch zu beachten, dass das Löschen dieser beiden Zeitstempelfelder dazu führt, dass einige der integrierten Funktionen von Laravel fehlschlagen. Beispielsweise kann das Modell weder nach den Feldern „created_at“ und „update_at“ sortiert werden, noch kann es die Erstellungs- und Aktualisierungszeit von Daten automatisch aufzeichnen.

Wenn wir nur eines der Zeitstempelfelder löschen müssen, z. B. nur „created_at“, können wir Folgendes tun:

// 只取消 created_at
const UPDATED_AT = 'updated_at';

Diese Methode besteht darin, die Konstante UPDATED_AT der Zeichenfolge „update_at“ zuzuweisen, und standardmäßig ist der Wert von UPDATED_AT „update_at“. , also so. Stornieren Sie nur „created_at“.

Wenn wir nach dem Löschen dieser Zeitstempelfelder unsere eigene Datenerstellungszeit und Aktualisierungszeit aufzeichnen müssen, müssen wir manuell Code schreiben, um dies zu erreichen. Hier ist ein Beispiel:

// 在模型中实现自定义时间戳字段
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();
    });
}

In diesem Beispiel definieren wir zwei Felder, create_time und update_time, im Modell, um die Erstellungszeit und Aktualisierungszeit der Daten aufzuzeichnen. Gleichzeitig ändern wir das Standardzeitformat, indem wir das Attribut $dateFormat definieren. In der Boot-Methode weisen wir durch die Erstellungs- und Aktualisierungsereignisse Werte zu create_time und update_time zu. Die freshTimestamp-Methode kann den neuesten Zeitstempel abrufen.

Zusammenfassend lässt sich sagen, dass das Abbrechen von „created_at“ und „update_at“ durch Hinzufügen von $timestamps = false im Modell oder durch Ändern der UPDATED_AT-Konstante erreicht werden kann. Das Löschen dieser Zeitstempelfelder wirkt sich auf einige integrierte Funktionen in Laravel aus, wie z. B. Sortieren und automatische Zeiterfassung usw. Wenn Sie die Zeitstempelaufzeichnung selbst implementieren müssen, können Sie dies durch manuelles Schreiben von Code tun.

Das obige ist der detaillierte Inhalt vonSo brechen Sie „created_at“ in Laravel ab. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn