2

私のアプリケーションには、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 テンプレートにある可能性があると思いますが、何が問題なのかわかりません。

4

1 に答える 1

0

$Aufwand をテンプレートに渡して、次のようにします。

{{Aufwand.aufgabe.version.number}}

それはビューから機能するはずです。

于 2013-03-08T20:14:11.637 に答える