2016-11-03 4 views
0

Ich brauche den Unterschied zwischen 2 Daten, aber nicht nur zwischen 2 bestimmten Daten, ich spreche über eine Tabelle mit der Spalte "pdt_expires", und ich möchte zeigen, wie viel Tage bis zu diesem Datum, aber in jeder Reihe. Ex:Erhalten Sie den Unterschied zwischen zwei Daten in jeder Zeile

  • Rice - 2 lb - läuft in 54 Tagen
  • Beans - 3 lb - gültig bis in 31 Tagen

Ich sah Tausende von Lösungen für nur 2 spezifische Daten, aber kein für diesen Fall . Ich frage mich, ich brauchen würde:

  • eine Funktion in Produkt-Modell, das die „pdt_expire“ zugreifen und Kohlenstoff verwenden, um den Endwert

OR zu erhalten - eine Funktion innerhalb der Ansicht, dass das $ Produkt erhalten -> pdt_expire und bekomme den Endwert

Also jede Hilfe wäre toll, danke.

Antwort

2

Wie es zu erreichen, nur einfache DATEDIFF Abfrage:

ProductModel::select([ 
    'products.*', 
    \DB::raw('DATEDIFF(pdt_expires, NOW()) as expires_in') 
])->get(); 

So in jedem Produkt, das Sie haben, wird es eine zusätzliche Spalte expires_in, die zwischen NOW-pdt_expires verschiedenen genannt haben Tage speichert.

DATEDIFF: How to get the number of days of difference between two dates on mysql?

+0

dachte, ich würde nie sagen, aber es funktioniert wirklich, aber mir sagen, pls, Sie Art schuf diese „neue virtuelle Spalte“ bezeichnet in der Tabelle expires_in so die Abfrage nun zugreifen kann? Wirklich, danke, Jungs, verlor den ganzen Tag in diesem Szenario! Vielen Dank! –

+0

Nicht wirklich virtuelle Spalte, sondern nur Standardfunktion in SQL. Da Sie das diff von Tagen machen, warum tun Sie es nicht in der einzelnen Abfrage? Natürlich können Sie Laravels Mutatoren verwenden, aber das wäre ein wenig zu viel für diese einfache Abfrage –

+0

Got it! Vielen Dank noch einmal, fella, das hilft wirklich sehr in meinem Projekt –

Verwandte Themen