【发布时间】: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
)
]
我想了解:
- 这些神奇的
_ids是如何以及为什么会出现的? - 有没有办法控制或防止这种行为?
【问题讨论】:
-
您确定在数据库数据检索中看到它们吗?而不是在使用请求数据创建/修补实体之后?
-
其实我现在有点糊涂了……在创建/修补实体后,这些ID应该已经解析为实体,所以我猜您只是查看请求/表单数据。
-
显示生成 id 的代码、整个相关代码以及表中的关联。
-
这些是关联记录的 ID,在本例中为
routes。它们是否也作为完整实体返回,还是您只是获取 ID?我通常希望在使用contain()时获得完整的实体。您显示的结构可以在“保存”部分下的CakePHP ORM documentation 和CakePHP Cookbook 中看到。了解您如何构建和执行查询以及您是否是延迟加载关联会有所帮助。
标签: php cakephp orm cakephp-3.0