public function searchTimeAttr($query, $value, $data)
{
$timeKey = $data['timeKey'] ?? 'add_time';
switch ($value){
case 'today':
case 'week':
case 'month':
case 'year':
case 'yesterday':
case 'last year':
case 'last week':
case 'last month':
$query->whereTime($timeKey, $value);
break;
case 'quarter':
[$startTime, $endTime] = $this->getMonth();
$query->whereBetween($timeKey, [$startTime, $endTime]);
break;
case 'lately7':
$query->whereBetween($timeKey, [strtotime("-7 day"), time()]);
break;
case 'lately30':
$query->whereBetween($timeKey, [strtotime("-30 day"), time()]);
break;
default:
if (strstr($value, '-') !== false){
[$startTime, $endTime] = explode('-',$value);
if ($startTime && $endTime){
$query->whereBetween($timeKey,[strtotime($startTime), strtotime($endTime) + 86400]);
}elseif (!$startTime && $endTime){
$query->whereTime($timeKey, '<', strtotime($endTime) + 86400);
}elseif($startTime && !$endTime){
$query->whereTime($timeKey, '>=', strtotime($startTime) + 86400);
}
}
break;
}
}