在这里使用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幕后可能会发生什么?这是一个错误吗?
答案 0 :(得分:0)
好吧,似乎修复是从模型的追加数组中删除'status'。在Laravel 4的更新过程中,json / array转换期间使用可见和附加数组的方式似乎已经改变了。
有时我需要让它们同时使我的属性正常工作,或者有时只是在'可见'中。这很奇怪,我想知道这些事情是否已经在Laravel 5中得到进一步澄清。也许我会看看源代码,看看我是否可以弄清楚这些数组是如何扩展/映射的。
对于遇到类似问题的人,我会留在这里。