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

Php 将请求字符串持久化到symfony2中的数据库失败?,php,database,entity-framework,symfony,Php,Database,Entity Framework,Symfony,首先,我有一个表单,它向我的控制器提交一些字符串。此控制器首先访问数据库中相应的实体,然后尝试更新该实体的字符串 我检索参数如下: $message = $request->request->get('message'); 出于测试目的,我在这行中添加了: echo '<script>alert("the message is: ' . $message . '");</script>'; 这将导致数据库中出现空值。没有错误,没有服务器崩溃,$messag

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

我检索参数如下:

$message = $request->request->get('message');
出于测试目的,我在这行中添加了:

echo '<script>alert("the message is: ' . $message . '");</script>';
这将导致数据库中出现空值。没有错误,没有服务器崩溃,
$message
永远不会到达它的目的地。
我的下一个假设是实体函数setMessage可能有问题,因此我尽可能在每种可能的组合中使用(字符串)强制转换

接下来,我将
var\u dump
放在所有地方,同样是所有可能的组合。甚至实体属性消息也会发出
“string(x)”xxxx

所以我想“它被正确地分配了”

到目前为止,我想我可能忘了

$em->persist($entity);

$em->flush();
但即使是这样,我似乎也记得把它放进去

所以我想到了一个新的测试。我创建了一个名为$test的新变量,给它分配了一些随机字符串,并用这个变量调用了setMessage,自然地认为这不可能工作。是的。事情进展顺利

总而言之:我得到了正确的实体,字符串被加载并在控制器中正确存在,实体方法工作完美,实体管理器按照我想要的方式持续和刷新


这里怎么了?我能确定的
$test
字符串和
$message
字符串之间的唯一区别是
$message
来自请求。看来这就是我对这件事的了解有限的地方。

我找到了解决问题的办法。实际上,我似乎是一个万能的问题解决者。关掉电脑,回家,第二天再来,一切正常

在这种情况下,我相信一定是有某种浏览器/symfony缓存问题/bug/error代表我存储了上次执行控制器时存储的$message,但未能正确清除它。尽管$message字符串始终正确到达控制器,但它从未被持久化。因此,要么(如果是缓存问题)$message在从控制器到实体方法/的过程中缓存在实体本身的某个地方,要么实体管理器本身具有实体的缓存版本,并在使用$message时使用它

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

$em->persist($entity);

$em->flush();