Ich bin gerade dabei, eine unserer Webanwendungen von CodeIgniter nach Laravel zu konvertieren. In diesem Moment möchten wir jedoch nicht die updated_at
/ created_at
-Felder zu allen unseren Tabellen hinzufügen, da wir eine Protokollierungsklasse haben, die dies alles bereits ausführlicher für uns erledigt.
Ich bin mir bewusst, dass ich Folgendes einstellen kann $timestamps = false;
:
Vendor\laravel\framework\src\illuminate\Datebase\Eloquent\Model.php
Ich möchte jedoch lieber keine Kerndatei für Laravel ändern oder alle meine Modelle haben diese oben. Gibt es eine Möglichkeit, dies für alle Modelle an anderer Stelle zu deaktivieren?
Platzieren Sie diese Zeile einfach in Ihrem Modell :
public $timestamps = false;
Und das ist es!
Beispiel:
So deaktivieren Sie Zeitstempel für eine Operation (z. B. in einer Steuerung):
Erstellen Sie eine neue Datei, um Zeitstempel für alle Ihre Modelle zu deaktivieren
BaseModel
:Erweitern Sie dann jedes Ihrer Modelle mit den folgenden
BaseModel
Angaben:quelle
Wenn Sie nur die Aktualisierung von update_at deaktivieren müssen, fügen Sie diese Methode einfach Ihrem Modell hinzu.
Dadurch wird die übergeordnete Methode setUpdatedAtAttribute () überschrieben. created_at funktioniert wie gewohnt. Auf die gleiche Weise können Sie eine Methode schreiben, um die Aktualisierung nur von created_at zu deaktivieren.
quelle
Wenn Sie 5.5.x verwenden:
Und für das Feld 'created_at' können Sie Folgendes verwenden:
Stellen Sie sicher, dass Sie auf der neuesten Version sind. (Dies wurde in Laravel 5.5.0 gebrochen und in 5.5.5 erneut behoben).
quelle
Beredtes Modell:
Oder versuchen Sie es einfach
quelle
Wenn Sie wie zuvor erwähnt Zeitstempel aus dem vorhandenen Modell entfernen möchten, fügen Sie diese in Ihr Modell ein:
Erstellen Sie auch eine Migration mit folgendem Code in der
up()
Methode und führen Sie sie aus:Sie können
$table->timestamps()
in Ihrerdown()
Methode verwenden, um ein Rollback zu ermöglichen.quelle
public
Deklarieren Sie einfach die Zeitstempelvariable in IhremModel
tofalse
und alles wird großartig funktionieren.public $timestamps = false;
quelle
Fügen Sie diese Zeile Ihrem Modell hinzu:
quelle
Überschreiben Sie die Funktionen
setUpdatedAt()
undgetUpdatedAtColumn()
in Ihrem Modellquelle
Sie können Zeitstempel vorübergehend deaktivieren
quelle