我有一个Stats
实体,通过Journey
关联与ManyToOne
实体相关。
id:
index:
type: integer
fields:
idJourney:
type: string
// data fields...
manyToOne:
journey:
targetEntity: Journey
joinColumn:
name: idJourney
referencedColumnName: idJourney
Journey
通过两个Station
关联与ManyToOne
实体相关:一个用于Station
的第一个Journey
,另一个用于id:
idjourney:
type: string
fields:
idFirstStation:
type: string
idLastStation:
type: string
// other info fields
manyToOne:
firstStation:
targetEntity: Station
joinColumn:
name: idFirstStation
referencedColumnName: idStation
lastStation:
targetEntity: Station
joinColumn:
name: idLastStation
referencedColumnName: idStation
。
Station
最后,id:
idStation:
type: string
fields:
name:
type: string
// other station info
实体:
Stats
我通过自定义Repository方法检索包含所有相关子对象的$statCollection = $statsRepository->getStatsByDateAndArea($date, $area);
//This retrieves the expected data
$statCollection[0]->getJourney()->getFirstStation()->getName();
个对象的集合,该方法工作正常。
foreach
但是,使用foreach($statCollection as $stat) {
$journey = $stat->getJourney(); // works fine
$firstStationId = $journey->getFirstStationId(); // works too
$firstStation = $journey->getFirstStation(); // still works, but returns a Proxies\AcmeAppPathWhateverBundleEntityStationProxy object instead of a AcmeAppPathWhateverBundleEntityStation, but this should be transparent (as per Doctrine documentation)
$firstStationName = $firstStation->getName(); // throws an EntityNotFoundException
}
循环遍历集合并不起作用:
EntityNotFoundException: Entity was not found.
知道发生了什么事吗?我应该强制Doctrine获取所有子实体吗?
修改 错误消息相当简洁:
{{1}}
不是很有帮助......
答案 0 :(得分:2)
我最终明确查询了我的自定义存储库方法中的完整子实体集......
我更改了此查询:
->select('stats')
->leftJoin('stats.journey', 'j')
->leftJoin('j.firstStation', 'fs')
->leftJoin('j.lastStation', 'ls')
到:
->select('stats, j, fs, ls')
->leftJoin('stats.journey', 'j')
->leftJoin('j.firstStation', 'fs')
->leftJoin('j.lastStation', 'ls')
我想Doctrine对Proxy对象的使用并不是那么透明......