1

私はドクトリン2で厄介な問題に直面しています。

ドキュメント エンティティと会議エンティティがあります。

/**
 *
 * @author klauss
 *
 * @ORM\Entity
 * @ORM\HasLifecycleCallbacks
 */
class Document
{
    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    public $id;

    /**
     * @ORM\Column(type="string", length=255, nullable=true)
     */
    public $path;

    /**
     * @ORM\OneToOne(targetEntity = "Conference", mappedBy = "image")
     */
    protected $conference;

    /**
     * @Assert\File(
     *      maxSize="4M",
     *      maxSizeMessage="Allowed maximum size is {{ limit }}"
     * )
     */
    public $file;

    // .....

そして会議エンティティ

// .........

    /**
     * Uploaded image.
     *
     * @ORM\OneToOne(targetEntity = "Document", inversedBy = "conference")
     * @ORM\JoinColumn(name = "image", nullable = true, referencedColumnName = "id")
     */
    protected $image;

// ............

したがって、Twig テンプレートでは、次のことを行いたいと思います。

{{ conference.image.path }}

しかし、それは画像をロードしないだけです。常に呼び出す必要があります

$conference->getImage()->getPath();

PHP で、Twig で正しいパスを取得します。しかし、それは同じであるべきではありませんか?PHP で呼び出さない場合、Twig 呼び出しは空の文字列を返すだけです。

Doctrine が Document 関係を自動的に認識できるようにするにはどうすればよいですか?

4

1 に答える 1

2

エンティティ クラス変数を非公開または保護にします。Doctrine 2 はこれに依存して動作し、遅延読み込みの魔法です。

http://docs.doctrine-project.org/en/latest/reference/architecture.html

于 2012-04-12T13:08:55.080 に答える