首先,我有一个向我的控制器提交一些字符串的表单。该控制器首先访问数据库中的相应实体,然后尝试为该实体更新这些字符串。
我检索参数如下:
$message = $request->request->get('message');
出于测试目的,我输入了这一行:
echo '<script>alert("the message is: ' . $message . '");</script>';
它会提醒预期的消息-> 所以我继续假设 $message 变量实际上正确地“使它”到了我的控制器。
接下来,我更新实体信息:
$entity->setMessage($message);
这会导致数据库中出现空值。没有错误,没有崩溃的服务器,$message
只是永远达不到它的命运。
我的下一个假设是实体函数 setMessage 可能有问题,因此我在每种可能的组合中尽可能使用(字符串)强制转换。
接下来,我把一个var_dump
无处不在,再次所有可能的组合。甚至发出实体属性消息"string(x)" xxxx
所以我想“好吧,它被正确分配了”
到目前为止,我假设我可能忘记了
$em->persist($entity);
$em->flush();
但即便如此,我似乎也记得把它放进去。
所以我想到了一个新的测试。我创建了一个名为 $test 的新变量,为它分配了一些随机字符串,并用它调用了 setMessage,自然假设这不可能工作。它做了。它顺利地坚持了下来。
总结一下:我得到了正确的实体,字符串被加载并且实际上正确地存在于控制器中,实体方法完美地工作,实体管理器以我想要的方式持续存在并刷新。
这里有什么问题?$test
我的字符串和$message
我可以确定的字符串之间的唯一区别是$message
来自请求。看来这就是我对此事的了解有限的地方。