我的应用程序中有三个相关实体,具有oneToMany方法:一个“Aufwand”属于一个“Aufgabe”,属于一个“版本”。在控制器中的某一点上,我写的:Symfony2和Doctrine:代理类不会延迟加载实体字段
$Aufwand['version'] = $Aufwand->getAufgabe()->getVersion();
,并传递到嫩枝模板用:
return $this->render('XXX:Aufwand:index.html.twig', array('Aufwand' => $Aufwand));
“版本”有一个字符串属性“nummer”至极我尝试访问我的使用
{{ Aufwand.version.nummer }}
但不打印输出,对于相同的“版本”的所有其他属性模板 - 但我检查和Aufwand.version
单独确实是一个XXXXVersionProxy
- 对象,因为它应该是。因此,从教义中“懒惰加载”并不真正发生。
这是在 “Version.orm.yml” 的映射信息:
XXX\Entity\Version:
type: entity
repositoryClass: XXX\Repository\VersionRepository
table: version
id:
Projekt:
associationKey: true
nummer:
type: string
length: 20
fields:
beschreibung:
type: text
nullable: true
faktor:
type: decimal
precision: 2
scale: 1
uniqueConstraints:
version_nr_unique:
columns: nummer
oneToMany:
Aufgaben:
targetEntity: Aufgabe
mappedBy: Version
manyToOne:
Projekt:
targetEntity: Projekt
inversedBy: Versionen
joinColumn:
name: projekt_nummer
referencedColumnName: nummer
和在 “Aufgabe.orm.yml”:
XXX\Entity\Aufgabe:
type: entity
repositoryClass: XXX\Repository\AufgabeRepository
table: aufgabe
id:
id:
type: integer
generator:
strategy: AUTO
fields:
name:
type: string
length: 40
beschreibung:
type: text
nullable: true
faktor:
type: decimal
precision: 2
scale: 1
soll_aufwand:
type: integer
oneToMany:
Aufwaende:
targetEntity: Aufwand
mappedBy: Aufgabe
manyToOne:
Kategorie:
targetEntity: Kategorie
inversedBy: Aufgaben
joinColumn:
name: kategorie_id
nullable: false
referencedColumnName: id
Projekt:
targetEntity: Projekt
inversedBy: Aufgaben
joinColumn:
name: projekt_nummer
referencedColumnName: nummer
nullable: true
Version:
targetEntity: Version
inversedBy: Aufgaben
joinColumn:
name: version_nummer
nullable: true
referencedColumnName: nummer
getter和setter在 “版本”和“Aufgabe”是标准的“get {Attribute}()”,这些属性本身是私有的。我已经尝试清除元数据高速缓存并在控制器中倾销$Aufwand->getAufgabe()->getVersion() // also plus ->getNummer()
,所有内容似乎都是正确的。在数据库表“Aufwand”有一个“版本”,应该给我它的“数字”的“Aufgabe”...
我在PostgreSQL上使用PHP Symfony 2.0.16与Doctrine 2数据库,任何提示寻找错误,将不胜感激。我想它可能在枝条模板中,但我不知道什么是错的。
我发现http://stackoverflow.com/questions/7599007/lazy-loading-properties-not-loading-in-doctrine-2-0?rq=1有类似的问题和一个解决方法,使用'fetch:EAGER '在“manytoOne” - 定义中 – Manuel