我有一个仅包含时间的数据库字段,在我的迁移中声明为
$table->time('time')->default('00:00:00');
现在,我想使用Eloquent在此字段中添加几秒钟的信息,
$activetime->time->add(new DateInterval('PT5S'));
(其中$ activetime是雄辩模型的对象)
首先尝试一下我得到的
Call to a member function add() on string
因此,显然我必须告诉Eloquent,这不是字符串而是时间。我得到的最接近的结果是将其放入模型中受保护的$ dates中,但是相反,我得到了
Unexpected data found.
我怀疑这是因为它实际上不是日期,而只是时间,但是我似乎找不到太多有关如何处理时间的信息。有什么方法可以解决这个问题,还是我可以使用其他一些更好的方法,例如dateTime或timestamp(甚至是整数表示秒数)?我要记录的是用户在给定日期的活动时间量,因此为此目的,时间似乎是自然的选择...
答案 0 :(得分:1)
这是因为Laravel仅将time
读取string
数据库类型,并且您期望使用DateTime Object
。
将此添加到您的口才模型中
public function getTimeAttribute($value)
{
return new \DateTime($value);
}
您还可以使用Laravel Attribute Casting将time
强制转换为DateTime Object
,但是由于Laravel期望格式正确,因此您必须在时间上加上一些日期