解决方案1:保存在缓存中:(如果
使用此代码,我可以在视图表中的4天之前获取数据,我想在获取数据后显示它在视图表中的任何时间显示
$dueDate = Carbon::now()->addDays(4);
Payment::select( 'next_due_date')->whereDate('next_due_date', $dueDate)->get();
如果您想保存状态,您有很多选项。最方便快捷的方法是将它们保存在cache
或database
本身中。
解决方案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]);