Laravel模型属性在json响应中为null

时间:2015-05-28 19:30:38

标签: php json rest laravel laravel-4

在这里使用Laravel 4.2。我有一个具有“状态”的模型。属性。我宣布了一个像这样的访问者:

public function getStatusAttribute($status) {
  if (isset($this->expires_at) && strtotime(\Carbon\Carbon::now()) > strtotime($this->expires_at)) {
    return 'expired';
  }

  return $status;
}

如您所见,我试图通过检查过期日期来覆盖从数据库传入的内容。当模型从我的api以JSON的形式发回时,这一切似乎都能正常工作。模型的状态最终为空。

该属性同时位于visible和append数组中,当我在REST控制器中将其转储为var时,状态是正确的:

var_dump($item->status);

返回正确的状态。任何人都知道Laravel幕后可能会发生什么?这是一个错误吗?

1 个答案:

答案 0 :(得分:0)

好吧,似乎修复是从模型的追加数组中删除'status'。在Laravel 4的更新过程中,json / array转换期间使用可见和附加数组的方式似乎已经改变了。

有时我需要让它们同时使我的属性正常工作,或者有时只是在'可见'中。这很奇怪,我想知道这些事情是否已经在Laravel 5中得到进一步澄清。也许我会看看源代码,看看我是否可以弄清楚这些数组是如何扩展/映射的。

对于遇到类似问题的人,我会留在这里。