Jestem w trakcie konwersji jednej z naszych aplikacji internetowych z CodeIgniter na Laravel. Jednak w tej chwili nie chcemy dodawać pól updated_at
/ created_at
do wszystkich naszych tabel, ponieważ mamy klasę rejestrującą, która robi to wszystko bardziej szczegółowo dla nas.
Wiem, że mogę ustawić $timestamps = false;
:
Vendor\laravel\framework\src\illuminate\Datebase\Eloquent\Model.php
Wolałbym jednak nie zmieniać pliku podstawowego dla Laravela, ani nie chcę, aby każdy z moich modeli miał go na górze. Czy jest jakiś sposób, aby wyłączyć to gdzie indziej dla wszystkich modeli?
Po prostu umieść tę linię w swoim modelu :
public $timestamps = false;
I to wszystko!
Przykład:
Aby wyłączyć znaczniki czasu dla jednej operacji (np. W kontrolerze):
Aby wyłączyć znaczniki czasu dla wszystkich modeli , utwórz nowy
BaseModel
plik:Następnie rozszerz każdy ze swoich modeli za pomocą
BaseModel
:źródło
Jeśli potrzebujesz tylko wyłączyć aktualizację updated_at, po prostu dodaj tę metodę do swojego modelu.
Spowoduje to zastąpienie nadrzędnej metody setUpdatedAtAttribute (). utworzono_at będzie działać jak zwykle. W ten sam sposób możesz napisać metodę, aby wyłączyć aktualizację tylko Created_at.
źródło
Jeśli używasz wersji 5.5.x:
W przypadku pola „Created_at” możesz użyć:
Upewnij się, że korzystasz z najnowszej wersji. (Zostało to zepsute w Laravel 5.5.0 i naprawione ponownie w 5.5.5).
źródło
Elokwentny model:
Lub po prostu spróbuj tego
źródło
Jeśli chcesz usunąć znaczniki czasu z istniejącego modelu, jak wspomniano wcześniej, umieść to w swoim Modelu:
Utwórz również migrację za pomocą następującego kodu w
up()
metodzie i uruchom ją:Można używać
$table->timestamps()
wdown()
sposób, aby umożliwić wycofywanie.źródło
po prostu zadeklaruj
public
zmienną timestamps w swoimModel
tofalse
i wszystko będzie działać świetnie.public $timestamps = false;
źródło
Dodaj tę linię do swojego modelu:
źródło
Zastąp funkcje
setUpdatedAt()
igetUpdatedAtColumn()
modelźródło
Możesz tymczasowo wyłączyć znaczniki czasu
źródło