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();