持久请求symfony2中的数据库字符串失败?

时间:2013-09-25 12:36:32

标签: php database entity-framework symfony

首先,我有一个向控制器提交一些字符串的表单。该控制器首先访问数据库中的相应实体,然后尝试更新该实体的字符串。

我按如下方式检索参数:

$message = $request->request->get('message');

出于测试目的,我把这行:

echo '<script>alert("the message is: ' . $message . '");</script>';

它提醒预期的消息 - &gt;所以我继续并假设$ message变量实际上“正确地”使我的控制器“。”

接下来,我更新实体信息:

$entity->setMessage($message);

这会导致数据库中出现空值。没有错误,没有崩溃的服务器,$message永远不会达到它的命运 我的下一个假设是实体函数setMessage可能有问题,因此我尽可能在每种可能的组合中使用(字符串)转换。

接下来,我将var_dump放在任何地方,所有组合都可能。甚至实体属性消息也发布了"string(x)" xxxx

所以我认为“好吧它被正确分配”

到目前为止,我认为我可能已经忘了

$em->persist($entity);

$em->flush();

但即便如此,我似乎还记得要投入。

所以我想到了一个新的测试。我创建了一个名为$ test的新变量,为它分配了一些随机字符串并使用这个变量调用了setMessage,自然而然地假设这不可行。它做了。它得以顺利进行。

总结一下:我得到了正确的实体,字符串被加载并且在控制器中实际存在,实体方法完美地工作,实体管理器持续存在并按照我想要的方式刷新。

这里有什么问题?我可以确定的$test字符串和$message字符串之间的唯一区别是$message来自请求。似乎我对此事的了解有限。

1 个答案:

答案 0 :(得分:0)

我找到了问题的解决方案。我实际上似乎是一个普遍的问题解决者。关闭电脑,回家,第二天回来,它有效。

鉴于这种情况,我认为必须存在某种类型的浏览器/ symfony缓存问题/错误/错误代表我从前一次执行控制器存储的$ message并且无法正确清除它。即使$ message字符串总是正确地到达控制器,它也永远不会被持久化。所以要么(如果它是一个缓存问题)$ message在从控制器到实体方法/实体本身的某个地方被缓存,或者实体管理器本身有一个实体的缓存版本并在使用$ message时使用它

这就是我提出的解释。如果某人有一个有根据的猜测或实际知道发生了什么,请告诉我。