laravel 我在 4 天前在视图 table 中获取价值 如何保持一旦获取价值显示在 table 如果日期晚于任何时间

laravel im getting value in view table before 4day how to keep once get value show in table if date after any time

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

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

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

解决方案 1:保存在缓存中:(如果您在 payments table 中没有太多行,则重新考虑)

$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:保存在数据库中(改进的方式)

/**
 * 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]);