【问题标题】:Laravel model attribute is null in the json responseLaravel 模型属性在 json 响应中为空
【发布时间】:2015-08-11 11:48:23
【问题描述】:

在这里使用 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 发回时,这一切似乎都可以正常工作。模型的状态最终为空。

属性在可见数组和附加数组中,当我在 REST 控制器中像这样 var 转储它时,状态是正确的:

var_dump($item->status);

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

【问题讨论】:

    标签: php json rest laravel laravel-4


    【解决方案1】:

    看来解决方法是从模型的 appends 数组中删除“状态”。在 Laravel 4 的更新过程中,在 json/array 转换期间使用可见数组和附加数组的方式似乎已经发生了变化。

    有时我需要将它们同时包含在我的属性中才能正常工作,或者有时只是在“可见”中。这很奇怪,我想知道 Laravel 5 中是否进一步澄清了这些事情。也许我会看一下源代码,看看是否可以弄清楚这些数组是如何扩展/映射的。

    我会把这个留给遇到类似问题的人。

    【讨论】:

    • 在 Laravel 8 上还是一样的。如果数据库表中已经存在属性,则不应附加它。只需定义访问器。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-30
    • 2019-08-05
    • 2021-06-27
    • 2023-04-03
    • 2019-01-15
    • 2020-06-27
    相关资源
    最近更新 更多