我在两个类(协议和历史)之间存在双向一对多关系。在搜索特定协议时,我希望看到与该协议相关的所有历史记录条目。
在渲染我的模板时,我传递了以下内容:
return $this->render('FunarbeProtocoloAdminBundle:Protocolo:show.html.twig', array(
'entity' => $entity,
'delete_form' => $deleteForm->createView(),
'history' => $entity->getHistory(),
)
);
entity->getHistory()
返回PersistentCollection而不是数组,这会导致以下内容呈现错误:
{% for hist in history %}
<tr>
<td>{{ hist.dtOcorrencia|date('d/m/Y H:i') }}</td>
<td>{{ hist.dtRetorno|date('d/m/Y H:i') }}</td>
</tr>
{% endfor %}
如果不是$entity->getHistory()
我通过了$em->getRepository('MyBundle:History')->findByProtocol($entity)
,它就可以了。但我认为,双向关系的主要目的是避免打开存储库并明确打开新的结果集。
我做错了吗?我该怎么做?
答案 0 :(得分:3)
我所要做的只是在我的TWIG上打电话给以下人员:
{% for hist in entity.history %}
其他答案都不适合我。我必须直接在我的树枝上调用该属性,而不是使用它的getter。不知道为什么,但它有效。
感谢。
答案 1 :(得分:1)
试试这个:
return $this->render('FunarbeProtocoloAdminBundle:Protocolo:show.html.twig'
,array(
'entity' => $entity,
,'delete_form' => $deleteForm->createView(),
,'history' => $entity->getHistory()->toArray()
///////////
)
);
答案 2 :(得分:0)
你的代码很好,我总是把自己的麻烦归咎于我的收藏品而不是把它传递给我。你也可以尝试一下。
呈现代码更改
return $this->render('FunarbeProtocoloAdminBundle:Protocolo:show.html.twig', array(
'entity' => $entity,
'delete_form' => $deleteForm->createView(),
)
);
您想直接在树枝中访问历史记录。
<强>枝条强>
{% for hist in entity.getHistory() %}
<tr>
<td>{{ hist.dtOcorrencia|date('d/m/Y H:i') }}</td>
<td>{{ hist.dtRetorno|date('d/m/Y H:i') }}</td>
</tr>
{% endfor %}
如果更改后的结果相同,请尝试检查数组的hist,它可以嵌套!持久性收藏往往会这样做......
{% for history in entity.getHistory() %}
{% for hist in history %}
<tr>
<td>{{ hist.dtOcorrencia|date('d/m/Y H:i') }}</td>
<td>{{ hist.dtRetorno|date('d/m/Y H:i') }}</td>
</tr>
{% endfor %}
{% endfor %}