我的应用程序中有三个相关实体,带有oneToMany reation:一个“Aufwand”属于一个“Aufgabe”,属于一个“Version”。在控制器的某个时刻,我写道:
$Aufwand['version'] = $Aufwand->getAufgabe()->getVersion();
并将其传递给Twig模板:
return $this->render('XXX:Aufwand:index.html.twig', array('Aufwand' => $Aufwand));
“Version”有一个字符串属性“nummer”,我尝试使用
在我的模板中访问{{ Aufwand.version.nummer }}
但它没有打印任何内容,同样适用于“版本”的所有其他属性 - 但我检查过,Aufwand.version
单独就是XXXXVersionProxy
- 对象,应该如此。因此,Doctrine的“Lazy-Loading”显然不会发生。
这是“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
“Version”和“Aufgabe”中的getter和setter是标准的“get {Attribute}()”,属性本身是私有的。我已经尝试清除元数据缓存并在控制器中转储$Aufwand->getAufgabe()->getVersion() // also plus ->getNummer()
,一切似乎都在那里。在数据库表中,“Aufwand”有一个“Aufgabe”,它有一个“版本”,应该给我“nummer”......
我在PostgreSQL数据库上使用PHP Symfony 2.0.16和Doctrine 2,任何提示查找错误的提示都会非常感激。我想它可能在Twig模板中,但我不知道出了什么问题。
答案 0 :(得分:0)
为什么不将$ Aufwand传递给模板并执行:
{{Aufwand.aufgabe.version.number}}
这应该从视角开始。