Laravel时间戳碳非对象

时间:2014-04-09 16:49:15

标签: laravel-4 timestamp

您好我想创建自己的时间戳,它将与碳差异函数一起使用我的问题是“在非对象上调用成员函数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}

2 个答案:

答案 0 :(得分:4)

Laravel默认只将created_atupdated_atdeleted_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