У меня есть способ вернуть дату предстоящего платежа. В приведенном ниже примере getNextDate()
вернет углеродную дату, например:
Carbon @1549788696 {#1119 ▼
date: 2019-02-10 08:51:36.0 UTC (+00:00)
}
У меня в базе данных куча subscriptions
, и я хочу показать только one
результат на мой взгляд на следующую дату предстоящего платежа.
Пример, скажем, у меня есть три подписки:
Subscription 1, getNextDate() will return: 2019-02-18
Subscription 2, getNextDate() will return: 2019-02-10
Subscription 3, getNextDate() will return: 2019-02-25
Поскольку Subscription 2
- это следующее наступление, которое должно быть оплачено, я хочу показать только это в виджете на мой взгляд. Как бы я пошел об этом? Используя фильтр или карту, например, как показано ниже?
$subscriptions = auth()->user()->subscriptions()->get();
$filtered = $subscriptions->filter(function ($subscription) {
return $subscription->getNextDate();
});
dd($filtered);
Это просто вернет их всех. Но есть ли способ, которым я могу отфильтровать его, чтобы получить только один результат для следующего ближайшего getNextDate()
? Или я должен сделать это по-другому? Подойдут любые предложения.
PS. getNextDate()
просто получает start_date
для подписки, затем вычисляет разницу в месяцах от Carbon::now()
и проверяет, сколько платежей было сделано до сих пор, а затем возвращает следующую дату предстоящего платежа. Так что ничего особенного там не происходит.