【发布时间】:2019-01-11 08:59:54
【问题描述】:
我有一种方法可以返回即将到来的付款日期。在下面的示例中,getNextDate() 将返回一个 Carbon 日期,如下所示:
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() 的月差,并检查到目前为止已支付了多少付款,然后返回下一个即将到来的付款日期。所以没什么特别的。
【问题讨论】: