我有两张table:台阶和流水。
步骤有很多流程。
步骤有 relative_time
(字符串)列。
流量有 active_on
(可为空,时间戳)列。
步骤 relative_time
存储相关格式,其值如下:“+1年”、“+2天”、“+30天”等。
流量 active_on
当用户激活流时设置,它看起来像:“2017-12-30 00:00:00”。
每次我想知道流何时过期,我都会从数据库中选择它,然后在php(laravel,carbon)中执行:
/**
* @return null|Carbon
*/
public function getExpiresAtAttribute()
{
if (!$this->active_on) {
return null;
}
// Access the relative time for step (for example: "+3 days").
$relativeTime = $this->step->relative_time;
// Adds the limit time to the activation date,
// turning it possible to check when the current flow
// will "expires".
return $this->active_on->modify($relativeTime);
}
问题
在php中很容易检查expires at value。问题是,现在我只需要直接从数据库中选择“过期”的流,我不知道使用这种方法是否可行。我怎样才能做到这一点?
1条答案
按热度按时间1sbrub3j1#
您可以在相对时间中存储天数,而不是php日期间隔。这样您可以查询:
这样,所有的流都会过期。
实际上不需要改变数据库结构。您可以创建一个迁移来将相对时间从dateinterval转换为天数(是一个字符串字段)。
然后可以调整getExpireStatAttribute: