【问题标题】:Laravel Jessenger mongodb, can't change nested child formatLaravel Jenssegers mongodb,无法更改嵌套子格式
【发布时间】:2018-01-16 20:04:17
【问题描述】:

我是 mongodb 的新手,我对使用 jessenger 的 laravel 有以下问题。 我有这个集合结构的

{
  "_id": "597a1e5db7893325c3557152",
  "name": "Idalio",
  "age": "20",
  "created_at":"2017-07-27 04:00:01",
  "updated_at":"2017-07-27 17:09:49",
  "child": [{
    "name": "childName",
    "age": "5",
    "_id": {
        "$oid": "597a1e5db7893325c3557153"
    },
    "created_at": {
        "$date": {
            "$numberLong": "1501175389000"
        }
    },
    "updated_at": {
        "$date": {
            "$numberLong": "1501175389000"
        }
    }
  }]

}

在嵌套的子级“_id”、“created_at”和“updated_at”中,这些属性的格式与父级不同。我所需要的只是孩子与父母具有相同的格式,因为这些数据必须从旧 PDA 中读取,而这些数据不支持这种格式......在我的模型中,我有以下内容

public function child(){
    return $this->embedsMany('App\Models\Child');
}

最后在 mongodb 中,父子日期和“_id”格式相同。我不知道为什么子对象带有这些格式。有人可以帮我解决这个问题吗? :)

【问题讨论】:

  • 事实上,这里的“子”条目实际上是正确格式并使用本机类型,而您的“父”条目不正确 并且正在“字符串化”实际上“应该”存储为 BSON 类型的值。所以真的是这里需要修复的“父母”。字符串不适合这种数据,因为它们有局限性并且需要更多的存储空间。
  • 好的,我明白了,你是对的。但我需要孩子不仅有日期的父格式,因为它们必须从不支持子格式的旧设备中读取
  • 算不上什么借口。提出“我想打破新代码并坚持旧代码的问题”通常没有那么有成效。它可能会检查敏捷板上的任务,但它实际上只是增加了以后要做的工作。最好提出问题并解决现有问题。
  • 这不是借口。对于 Windows ce 3.5 设备极其有限,必须阅读此内容。我不能改变它,因为不依赖于 mi。我会使用 android 设备而不是那样,但不能那样。因此,更好的方法是更改​​ json 格式。

标签: json mongodb laravel


【解决方案1】:

可能在模型中使用 Accessors & Mutators

protected $dates = ['date'];

https://laravel.com/docs/5.3/eloquent-mutators#date-mutators

【讨论】:

    猜你喜欢
    • 2018-12-25
    • 2023-02-21
    • 2020-01-24
    • 2017-06-15
    • 2019-08-27
    • 2018-04-08
    • 2015-02-13
    • 2014-08-04
    • 2018-08-28
    相关资源
    最近更新 更多