我对Doctrine很新,但直到现在一切都进展顺利。我能够成功获取实体,并使用
更新它们$user = $em->find('User', 1);
$user->setFirstName('This');
$user->setLastName('Works');
$em->flush();
如果我执行此代码并查看我的数据库,实际上会更新用户的名字和姓氏。但是,当我使用
时$user = new User();
$user->setFirstName('This');
$user->setLastName('Doesnotwork');
$em->persist($user);
$em->flush();
我在数据库中查看,找不到新的记录。
那么,这里发生了什么?我知道这是一个相当笼统的描述,但我不知道从哪里开始调试...如果我打电话
$em->getUnitOfWork()->getScheduledEntityInsertions()
然后用户实体存在并且似乎被安排插入。所以,我完全不知道可能是什么问题。任何人?任何帮助将不胜感激!
编辑:我继续调试,并在我的EntityManagers配置中添加了EchoSQLLogger,但是,EchoSQLLogger从不记录任何内容,即使我的用户正在使用工作更新。到底发生了什么事?EDIT2:事实证明我的EntityManager配置一团糟。我现在能够成功地从EchoSQLLogger获取日志,这表明将执行INSERT INTO查询,但是,我的数据库中仍然没有插入。应该注意的是,我将现有的PDO对象作为Connection传递,并且我开始认为PDO的提交方法出了问题。但是,如果我向PDO询问错误代码,则返回0000,表示没有错误,因此应插入行...
答案 0 :(得分:0)
我发现了什么问题。事实证明,某些属性在MySQL中具有默认值,但在PHP中为null。我认为这不会有问题,但事实证明这是一个问题。无论如何,问题解决了。