关于我的环境的几个关键注释:
情况是:
// 1. Create a user via **WP** function (which returns ID)
$wp_user_id = wp_insert_user($wp_user_array);
// 2. Then, I need to immediately retrieve that user object via Doctrine
$wp_user = $MyDb->em->getRepository('WpUsers')->findOneBy(array('id'=>$wp_user_id));
// 3. RESULT = NULL
找不到该对象,可能是因为该实体被Doctrine缓存或存储在某个内存中。
如何强制Doctrine查看数据库并获取新创建的用户?
答案 0 :(得分:0)
您可以使用
清除doctrine缓存EntityManager::clear()
请参阅http://doctrine-orm.readthedocs.org/en/latest/reference/working-with-objects.html(搜索明确方法)
答案 1 :(得分:0)
这方面的解决方案最终变得相当简单。在尝试clear()
,refresh()
并强制清除Doctrine的缓存后,我的选项已用完。
事实证明我必须要做的是让Doctrine检查新记录是否已创建,关闭并打开连接:
$this->_em->getConnection()->close();
$this->_em->getConnection()->connect();
我知道,这不是最理想的解决方案,但它确实有效,我现在已经调试了五天了!