【问题标题】:Understanding _ids array in CakePHP model data了解 CakePHP 模型数据中的 _ids 数组
【发布时间】:2017-01-14 12:35:38
【问题描述】:

使用带有 Postgres DB 的 CakePHP v3.1。当我检索具有关联的记录时,我经常会看到一个额外的 _ids 数组。像这样的:

    ...
    (int) 26 => [
        'agency_id' => (int) 23,
        'routes' => [
            '_ids' => (int) 2
        ]
    ]

或者有时:

     '_ids' => Array (
        0 => 1
        1 => 5
        2 => 3
        3 => 4
     )
]

我想了解:

  1. 这些神奇的_ids 是如何以及为什么会出现的?
  2. 有没有办法控制或防止这种行为?

【问题讨论】:

  • 您确定在数据库数据检索中看到它们吗?而不是在使用请求数据创建/修补实体之后?
  • 其实我现在有点糊涂了……在创建/修补实体后,这些ID应该已经解析为实体,所以我猜您只是查看请求/表单数据。
  • 我不知道你的测试是什么样子的,没有足够的信息来判断它的确切来源,或者提出任何建议,但在正常情况下,_ids 键是显式添加到(请求)数据中,或通过表单助手隐式中途添加。搜索_idsherehere
  • 显示生成 id 的代码、整个相关代码以及表中的关联。
  • 这些是关联记录的 ID,在本例中为 routes。它们是否也作为完整实体返回,还是您只是获取 ID?我通常希望在使用contain() 时获得完整的实体。您显示的结构可以在“保存”部分下的CakePHP ORM documentationCakePHP Cookbook 中看到。了解您如何构建和执行查询以及您是否是延迟加载关联会有所帮助。

标签: php cakephp orm cakephp-3.0


【解决方案1】:

这些神奇的 _id 如何以及为什么会出现?

_ids 属性通常来自请求 数据。如果关联没有完全编组,它可能会留在实体上。

如果您提供了一种方法来重现 _ids 即将 退出 ORM,请在 github 上打开一个问题,因为这不应该发生。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-05
    • 1970-01-01
    • 2017-10-26
    • 1970-01-01
    • 1970-01-01
    • 2012-09-30
    • 2013-06-16
    相关资源
    最近更新 更多