【发布时间】:2016-11-30 10:56:58
【问题描述】:
相关信息:我正在使用 Symfony 2.8.x、Doctrine 2.4.8 和 JMSSerializerBundle 1.0。
一个Resource 可以有多个Experiences。我正在进行 API 调用 以检索 Resource 和所有关联的 Experiences。
但是,我返回的 JSON 在Experience 实体上的$resource 上包含null。
我正在使用以下方法来检索Resource:
$this->findBy([], [], $limit, $offset);
我不认为这应该是一个问题,因为我已经尝试直接在注释中将获取模式设置为EAGER - 这仍然没有奏效。我也清除了缓存。
Resource.orm.yml
oneToMany:
experiences:
targetEntity: Experience
mappedBy: resource
fetch: EAGER
Experience.orm.yml
resource:
targetEntity: Resource
inversedBy: experiences
joinColumn:
name: resource_id
referencedColumnName: id
fetch: EAGER
fetch: EAGER
看到我已经尝试了所有急切的获取!
响应
对此 json 发出 API 请求时得到的响应:
{
"resources": [{
"id": 1,
# SNIP #
"experiences": [{
"resource": null,
"id": 1,
# SNIP #
}]
}]
}
注意资源的空值!
这就是我认为延迟加载存在问题的原因:该集合是Doctrine\ORM\PersistentCollection 的一个实例,而不仅仅是我所期望的一个数组:
为什么这个为空??我的问题是什么?我有没有:
- 搞砸了关系配置,这实际上与延迟加载无关
- 将延迟加载放置在错误的位置
- 误解了,因为递归,这是一件好事?
- 还有什么迟钝的?
【问题讨论】:
标签: php symfony doctrine-orm