Mam dwa znaczniki czasu, edited_at, który utworzyłem i utworzyłem_at (Laravel) ... W bazie danych oba mają typ timestamp i wartość domyślną 0000-00-00 00:00:00 ... Ale
var_dump(edited_at variable)
podaje ciąg. Podczas gdy var_dump(created_at variable)
jest obiektem / węglem. Co jest nie tak z tymi sygnaturami czasowymi?
Muszę porównać oba po konwersji na liczbę całkowitą przy użyciu formatu („U”). Mogę wywołać tę metodę tylko w Carbon Object. Jak mogę to zrobić?
laravel
laravel-5
php-carbon
Hassan Saqib
źródło
źródło
Odpowiedzi:
Po pierwsze, Eloquent automatycznie konwertuje swoje znaczniki czasu (
created_at
,updated_at
) na obiekty węglowe. Możesz po prostu użyćupdated_at
tej fajnej funkcji lub określićedited_at
w swoim modelu we$dates
właściwości:protected $dates = ['edited_at'];
Wróćmy teraz do twojego aktualnego pytania. Węgiel ma wiele funkcji porównawczych:
eq()
równa sięne()
nie jest równygt()
Lepszy niżgte()
większy lub równylt()
mniej niżlte()
mniejszy lub równyStosowanie:
if($model->edited_at->gt($model->created_at)){ // edited at is newer than created at }
źródło
$date1->toDateString() == $date2->toDateString()
null
do PHPnull
zamiast obiektu Carbon, a otrzymaszcall to a member function lt() on null
.Carbon ma wiele funkcji porównawczych o nazwach mnemonicznych :
Stosowanie:
if($model->edited_at->greaterThan($model->created_at)){ // edited at is newer than created at }
jeśli nie jesteś pewien, na jakiej wersji Carbon jesteś, uruchom to
$composer show "nesbot/carbon"
dokumentacja: https://carbon.nesbot.com/docs/#api-comparison
źródło
Najpierw przekonwertuj znacznik czasu za pomocą wbudowanej funkcji elokwentnej, zgodnie z opisem w tej odpowiedzi .
Następnie możesz po prostu użyć funkcji Carbon
min()
lubmax()
dla porównania. Na przykład:$dt1 = Carbon::create(2012, 1, 1, 0, 0, 0); $dt2 = Carbon::create(2014, 1, 30, 0, 0, 0); echo $dt1->min($dt2);
Będzie
echo
to mniejsza z dwóch dat, czyli w tym przypadku$dt1
.Zobacz http://carbon.nesbot.com/docs/
źródło
W ten sposób porównuję 2 daty, teraz () i datę z tabeli
@if (\Carbon\Carbon::now()->lte($item->client->event_date_from)) ..... ..... @endif
Powinien działać dobrze. Skorzystałem z funkcji porównawczych udostępnionych przez Carbon.
źródło