我想在指定日期添加天数。这是我的代码:
if (Carbon::now() <= $campaign->s_lastrun->addDays(28)) {
$onAir = 1;
}
它一直有效,直到我对数据库进行了一些更改,现在我收到一个错误:Call to a member function addDays() on string
即使s_lastrun
列类型为DATE
. 有什么想法吗?
你需要告诉 Eloquent 这是一个日期,这样它才能将其转换为 Carbon。根据文档:
默认情况下,Eloquent 会将created_at和updated_at列转换为 Carbon 的实例,从而扩展 PHP DateTime 类以提供各种有用的方法。您可以通过覆盖模型的 $dates 属性来自定义自动更改的日期,甚至完全禁用此更改。
因此,在您的模型中,添加以下内容:
protected $dates = ['created_at', 'updated_at', 's_lastrun'];
删除created_at
,如果未使用默认时间戳,请updated_at
。
由于addDays()
不能应用于字符串变量,
您必须像这样使用 Carbon 解析$campaign->s_lastrun
:
Carbon::parse($campaign->s_lastrun)
然后像这样比较:
if (Carbon::now() <= Carbon::parse($campaign->s_lastrun)->addDays(28)) {
$onAir = 1;
}