私のアプリケーションには、oneToMany 関係を持つ 3 つの関連エンティティがあります。1 つの「Aufwand」は、1 つの「バージョン」に属する 1 つの「Aufgabe」に属します。コントローラーのある時点で、次のように記述します。
$Aufwand['version'] = $Aufwand->getAufgabe()->getVersion();
それを Twig テンプレートに渡します。
return $this->render('XXX:Aufwand:index.html.twig', array('Aufwand' => $Aufwand));
「バージョン」には、使用してテンプレートでアクセスしようとする文字列属性「番号」があります
{{ Aufwand.version.nummer }}
しかし、「バージョン」の他のすべての属性と同じように、何も出力しません-しかし、私がチェックしたところ、Aufwand.version
実際にはXXXXVersionProxy
-オブジェクトである必要があります。どうやらDoctrineからの「遅延読み込み」は実際には起こらないようです。
これは、「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" のゲッターとセッターは標準の "get{Attribute}()" で、属性自体は非公開です。メタデータキャッシュのクリアと$Aufwand->getAufgabe()->getVersion() // also plus ->getNummer()
コントローラーへのダンプを既に試みましたが、すべてがそこにあるようです。そして、データベーステーブルには、「Aufwand」には「Aufgabe」があり、「Aufgabe」には「バージョン」があり、その「番号」が表示されます...
私は PostgreSQL データベースで Doctrine 2 とともに PHP Symfony 2.0.16 を使用しています。エラーを探す場所のヒントをいただければ幸いです。Twig テンプレートにある可能性があると思いますが、何が問題なのかわかりません。