错误:在字符串上调用成员函数addDays()

时间:2017-07-12 15:36:16

标签: php laravel

我想在指定日期添加天数。这是我的代码:

if (Carbon::now() <= $campaign->s_lastrun->addDays(28)) {
       $onAir = 1;
}

直到我对我的数据库进行了一些更改才有效,现在我收到错误:Call to a member function addDays() on string即使s_lastrun的列类型为DATE。 有什么想法吗?

2 个答案:

答案 0 :(得分:3)

你需要告诉Eloquent这是一个约会,以便它将它转换为Carbon。根据{{​​3}}:

  

默认情况下,Eloquent会将created_at和updated_at列转换为Carbon实例,它扩展了PHP DateTime类以提供各种有用的方法。您可以通过覆盖模型的$ dates属性来自定义哪些日期会自动变异,甚至完全禁用此变异。

因此,在您的模型中,添加以下内容:

protected $dates = ['created_at', 'updated_at', 's_lastrun'];

如果您没有使用默认时间戳,请删除created_atupdated_at

答案 1 :(得分:1)

由于addDays()无法应用于字符串变量,

您必须使用Carbon解析$campaign->s_lastrun

Carbon::parse($campaign->s_lastrun)

然后像这样比较:

if (Carbon::now() <= Carbon::parse($campaign->s_lastrun)->addDays(28)) {
   $onAir = 1;
}