您好我想创建自己的时间戳,它将与碳差异函数一起使用我的问题是“在非对象上调用成员函数diffInSeconds()”即使是艰难的时间戳也是正确的吗?
public function up()
{
Schema::create('global_limits', function(Blueprint $table) {
$table->increments('id');
$table->integer('user_id');
$table->integer('c_limiter');
$table->timestamp('time_comment');
$table->timestamps('');
});
}
以下是我如何将timepam创建为time_comment
$first_limit = new Limiter;
$first_limit->c_limiter = 1;
$first_limit->user_id = $id;
$first_limit->time_comment = new DateTime;
$first_limit->save();
何时
$user = User::find(1)->limits;
echo $user->time_comment
我得到2014-04-09 18:20:55但是当我这样做的时候
echo $user->time_comment->diffInSeconds();
< - 收到错误
Call to a member function diffInSeconds() on a non-object on proper timestamp.
奇怪的是,当我使用created_at和uptaded_at做同样的事情时,它可以正常工作。
echo $user->created_at->diffInSeconds();
< - 工作正常,以秒为单位显示差异
我知道我可以使用updated_at,但我想使用time_comment我有我的理由。
我不想要diffForHumans,因为我的目标是使用
if($user->time_comment->diffInSeconds() > 500)
{do something)else {do this}
答案 0 :(得分:4)
Laravel默认只将created_at
,updated_at
和deleted_at
视为Carbon实例。您需要将以下内容添加到用户模型
public function getDates()
{
return array('created_at', 'updated_at', 'time_comment');
}
这告诉Laravel将数组中的列视为Carbon实例。
答案 1 :(得分:0)
$first_limit = new Limiter;
$first_limit->c_limiter = 1;
$first_limit->user_id = $id;
$first_limit->time_comment = new DateTime; ///////////////// CHANGE IT to Carbon::now()
$first_limit->save();
您确定将 Carbon 实例添加到 time_comment