我只想列出需要連接的表(建築物)中的所有實體,以顯示一些細節(建築物管理)。我想使用Doctrine fetch join選項來避免額外的查詢,因爲每個建築物都必須顯示其建築物管理中的數據。Symfony2:在樹枝中顯示獲取連接結果
下面是一個基本的控制器例子。我的問題是,必須在選擇中包含bm
以便使用提取而非常規聯接。因此,$entities
變量包含b
和bm
個實體,並且Twig中的循環僅等待b
個實體。我該如何解決這個問題?
public function indexAction()
{
$em = $this->getDoctrine()->getManager();
// This way is working, but extra queries are generated when I need to access the BuildingManagement data from Building entity
//$entities = $em->getRepository('TrilogisPropertyBundle:Building')->findAll();
$entities = $em->createQuery(
'SELECT b, bm
FROM MyBundle:Building b
JOIN MyBundle:BuildingManagement bm WITH bm.building = b.id
ORDER BY b.id')
->getResult();
return $this->render('MyBundle:Test:index.html.twig', array(
'entities' => $entities,
));
}
而且在嫩枝
<table>
<thead>
<tr>
<th>ID</th>
<th>Building Management</th>
</tr>
</thead>
<tbody>
{% for entity in entities %}
<tr>
<td>{{ entity.id }}</td>
<td>{{ entity.buildingManagement.id}}</td> <-- will crash because the entity must be a building and not a buildingManagement
</tr>
{% endfor %}
</tbody>
</table>
Building和BuildingManagement之間有ORM關係嗎?通過這種方式,您可以訪問Building Management中的BuildingManagement – Cr3aHal0
@ Cr3aHal0當然,我有一個關係。但是您需要知道,從Building訪問BuildingManagement會創建一個我想避免的額外查詢 – sdespont