Ich habe eine Reihe von Tagen, die ich gegen die in Laravel Funken endet Studien überprüfen möchten:Laravel Eloquent - wo created_at X Tage vor
$trialIntervals = [10, 5, 3, 1, 0];
ich alle Teams holen und dann, wenn überprüfen ihre trial_ends_at Datum die Intervalle mit diffInDays:
$daysTillTrialEnds = Carbon::parse($team->trial_ends_at)->diffInDays(Carbon::now());
ich überprüfe dann, wenn dieser Wert bereits ein bestehendes Ergebnis in der Datenbank und in den Pausen ist:
if (in_array($daysTillTrialEnds, $trialIntervals) && !TrialEndingNotification::where('team_id', $team->id)->where('days_notified_at', $daysTillTrialEnds)->count()) {
// not yet been added to db
}
Ich habe ein Feld mit dem Namen 'days_notified_at', das ich verwende, um zu überprüfen, ob ich die Zeile bereits hinzugefügt und den Kunden benachrichtigt habe. Dieses Feld wird jedoch nie wieder verwendet und ich möchte lieber auf das created_at-Datum verweisen und das Feld entfernen.
Meine Frage ist, wie ich dies im Wesentlichen tun:
->where(Carbon::parse('created_at')->diffInDays(Carbon::now()), $daysTillTrialEnds)
Ohne diesen Fehler:
istDateTime::__construct(): Failed to parse time string (created_at) at position 0 (c): The timezone could not be found in the database
Ziel, dass die in dem nur die Zeilen angezeigt, die ein created_at Datum, das X Vor Tagen.
arbeiten, weil in der where-Funktion "-> where()" die ersten Argumente der Feldname ist, so Carbon :: als erste Argumente analysieren, wo hat – LorenzoBerti
nicht spüren Laravel hat eine 'whereDate()' -Funktion, die Ihnen in diesem Fall wahrscheinlich sehr helfen wird. –