私は Doctrine2 (最新バージョン) で Symfony2 を使用しており、この関係を定義しています:
/**
* @ORM\OneToMany(targetEntity="Field", mappedBy="event", fetch="EAGER")
* @ORM\OrderBy({"name" = "ASC"})
*/
protected $fields;
関係の反対側は次のように定義されます。
/**
* @ORM\ManyToOne(targetEntity="Event", inversedBy="fields", fetch="EAGER")
* @ORM\JoinColumn(nullable=false, onDelete="CASCADE")
*/
protected $event;
「fetchOnyById」を実行すると、Doctrine は 2 つのクエリを実行します。オブジェクト自体を取得する場合は 1、関連するフィールドを取得する場合は 1 です。これが結合であることを期待しますが、そうではありません。
コントローラーで完了したら、オブジェクトを twig に渡します。そこで、オブジェクトのプロパティとしてフィールドを再度取得します。これにより、フィールドを再度取得するために別のクエリが実行されます。
1 つのクエリのみが実行され、実際には 3 つのクエリが実行されると予想されるため、明らかに私は何か間違ったことをしています。