laravel我在4天之前在视图表中获取值如何保持一次获取值显示在表中,如果日期在任何时间之后



使用此代码,我可以在视图表中的4天之前获取数据,我想在获取数据后显示它在视图表中的任何时间显示

$dueDate = Carbon::now()->addDays(4);
Payment::select( 'next_due_date')->whereDate('next_due_date', $dueDate)->get();

如果您想保存状态,您有很多选项。最方便快捷的方法是将它们保存在cachedatabase本身中。

解决方案1:保存在缓存中:(如果payments表中没有太多行,则重新计算(

$payments = Payment::select( 'next_due_date')
->where(function($q){
// Get rows that are current next_due_date or is cached
$q->whereDate('next_due_date', Carbon::now()->addDays(4))
->when(cache()->has('saved_payment_ids'), function(){
$q->orWhereIn('id', cache()->get('saved_payment_ids') ?? []);
});
})
->get();
// Remember forever current rows in cache
cache()->forever('saved_payment_ids', $payments->pluck('id')->toArray());

解决方案2:保存在数据库中(Receoded方式(

/**
* First you have to add boolean (tinyint) row in payments table
* Lets call it: payment_due_date
*/
$payments = Payment::select( 'next_due_date')
->where(function($q){
$q->whereDate('next_due_date', Carbon::now()->addDays(4))
->orWhere('payment_due_date', 1);
})
->get();
// Update new rows to save for future fetching
Payment::query()
->where('payment_due_date', 0)
->whereDate('next_due_date', Carbon::now()->addDays(4))->update(['payment_due_date' => 1]);

相关内容

  • 没有找到相关文章

最新更新