これは以前にも聞かれたと思いますが、私が探している用語がよくわからないので、ご容赦ください!
次のようなテーブル構造があります。
[Branch] [Ville]
- ID - ID
- Ville_ID - Region_ID
[Region]
- ID
- Province_ID
[Province]
- ID
- Country_ID
[Country]
- ID
ブランチ エンティティは次のようになります。
/**
* @ORM\Entity
* @ORM\Table()
*/
class Succursale
{
/**
* @ORM\Id
* @ORM\GeneratedValue()
* @ORM\Column(name="ID", type="integer")
*/
protected $id;
/**
* @ORM\ManyToOne(targetEntity="Hero\LieuBundle\Entity\Ville")
* @ORM\JoinColumn(name="Ville_ID", referencedColumnName="ID", nullable=false)
*/
protected $ville;
}
都市、地域、州、および国のエンティティは、基本的に互いに同一です。
/**
* @ORM\Entity
* @ORM\Table()
*/
class Ville
{
/**
* @ORM\Column(name="ID", type="integer")
* @ORM\Id
* @ORM\GeneratedValue()
*/
protected $id;
/**
* @ORM\ManyToOne(targetEntity="Hero\LieuBundle\Entity\Region")
* @ORM\JoinColumn(name="Region_ID", referencedColumnName="ID", nullable=false)
*/
protected $region;
}
コードは単純です (Symfony2):
$succursales = $entreprise->getSuccursales();
そして、私が持っている小枝テンプレートで:
<ul>
{% for item in succursales %}
<li>{{ item.adresse }}, {{ item.ville.nom }}</li>
{% endfor %}
</ul>
これはすべてうまくいきます。ブランチを取得すると、問題なく市区町村を取得できますが、1 回のクエリで地域、州、国を取得できると便利なのは明らかです。Doctrine2 の素晴らしさを見て、これは可能だと確信していますが、誰かが私を正しい方向に向けることができれば幸いです!