Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel 在雄辩模型中使用时间场_Laravel_Laravel 5_Eloquent_Laravel 5.7 - Fatal编程技术网

Laravel 在雄辩模型中使用时间场

Laravel 在雄辩模型中使用时间场,laravel,laravel-5,eloquent,laravel-5.7,Laravel,Laravel 5,Eloquent,Laravel 5.7,我有一个只包含时间的数据库字段,它在迁移中声明为 $table->time('time')->default('00:00:00'); 现在,我想使用Elount在这个字段中添加几秒钟,做如下操作: $activetime->time->add(new DateInterval('PT5S')); (其中$activetime是雄辩模型的对象) 我第一次试穿这个 Call to a member function add() on string 所以很明显,我必须雄

我有一个只包含时间的数据库字段,它在迁移中声明为

$table->time('time')->default('00:00:00');
现在,我想使用Elount在这个字段中添加几秒钟,做如下操作:

$activetime->time->add(new DateInterval('PT5S'));
(其中$activetime是雄辩模型的对象)

我第一次试穿这个

Call to a member function add() on string
所以很明显,我必须雄辩地说,这不是一根弦,而是一段时间。我得到的最接近的结果是将它放在模型中受保护的$dates中,但是我得到的是

Unexpected data found.

我怀疑这是因为这不是一个真正的约会,只是一个时间,但我似乎找不到多少关于如何处理时间的信息。有没有办法解决这个问题,或者我最好还是使用其他方法,比如dateTime或timestamp(甚至是秒数的整数)?我想要记录的是用户在给定日期的活动时间量,因此,时间似乎是自然选择…

这是因为Laravel将
time
数据库类型读取为一个
字符串,而您需要一个
DateTime对象

将此添加到您雄辩的模型中:

公共函数getTimeAttribute($value)
{
返回new\DateTime($value);
}

您也可以使用将
时间
强制转换为
日期时间对象
,但您必须在时间中附加一些日期,因为Laravel希望格式正确

您需要将时间强制转换为什么?是否有时间对象?格式化$activetime->Time,然后添加秒数。如果您的模型没有任何其他日期字段,则可以将以下内容添加到模型中<代码>公共$timestamps=false;受保护的$dateFormat='H:i:s';受保护的$dates=['时间',]嗯,我有内置的时间戳字段(created_at,updated_at),我想它们会受到影响吗?这不是只解决了值的读取吗?我必须做写作的反向操作,对吗?无论如何,我认为我只是简单地将活动时间保存为秒,并在输出时进行漂亮的日期格式化。似乎更容易,因为我缺少用于时间处理的优秀内置函数。@DanielMalmgren是的,这只是用于读取值。您还可以使用
setTimeAttribute
来满足您的需要