【发布时间】:2015-03-29 04:20:09
【问题描述】:
在控制器的操作中,我从数据库加载一个 PDO 对象并将其发送到 twig 模板以呈现数据网格:
/**
* @Route("/action1", name="action1")
* @Template()
*/
public function action1Action(Request $request)
{
$mydata = $this->daoClass->getData();
return array(
'mydata' => $mydata
);
}
$myData 是使用 Doctrine 加载的,它返回一个带有(小)结果数组(PDO 对象)的 PDO 对象。我这样渲染:
<table>
{% for data in mydata %}
<tr>
<td>{{ data.foo }}</td>
<td>{{ data.bar }}</td>
</tr>
{% endfor %}
</table>
所以在 twig 模板中,在包含数据的表格下方,我得到了将数据发送到下一个操作的表单:
<form action="{{ path('action2') }}" method="post">
<!-- some javascript populated fields -->
<input type="hidden" id="field1" name="field1">
...
</form>
如何让它也发送渲染网格的 PDO 对象(mydata 对象)?
我尝试在第一个操作中将其插入会话中,以便在下一个操作中检索它,但收到消息:“您无法序列化或反序列化 PDO 实例”
有没有更好的方法来做到这一点?
我没有在这个模块中使用 symfony 表单,因为这是一个过于复杂的屏幕,有很多验证和计算字段,使用表单会复杂得多。
【问题讨论】:
-
为什么不从数据库中再次选择它?
-
当您说“PDO 对象”时,您是指实体还是实体的结果集?
-
对面不是更有意义吗?为什么选择两次相同的数据?
-
性能?您有任何真正的性能问题吗?如果是这样 - 这些问题是什么?哪里有数字?如果是关于性能问题的问题,为什么问题文本中一个字都没有?
-
所以您正在解决您还没有遇到的问题,并且您认为该解决方案将神奇地匹配您可能遇到的负载模式?你要思考的一件事:即使是 facebook 和 twitter 的工程师也无法预测所有的性能瓶颈。所以他们只是根据新的负载要求来发展他们的架构。你真的认为你能比他们做得更好吗?