我偶然发现symfony 2.6中有关当前用户的一些奇怪行为。我正在使用Doctrine和一个mysql数据库。现在考虑这个例子:
class StartController extends Controller {
public function welcomeAction() {
if ($this->getUser()) {
$this->getUser()->setLastLogin(new \DateTime());
$this->get('doctrine')->getManager()->flush();
... some more code ...
未执行任何更新语句。所以我修改了我的控制器:
class StartController extends Controller {
public function welcomeAction() {
if ($this->getUser()) {
$managedUserEntity = $this->get('doctrine')
->getRepository('MyBundle:User')
->find($this->getUser()->getUuid());
$managedUserEntity->setLastLogin(new \DateTime());
$this->get('doctrine')->getManager()->flush();
... some more code ...
无。我可以加载,修改和更新每个其他实体,但不能加载用户。我很确定,这至少在symfony 2.5中起作用,但显然不再如此。或许我做了一些错误的配置设置。
答案 0 :(得分:0)
你必须坚持你的对象:
$this->get('doctrine')->getManager()->persist($managedUserEntity);
$this->get('doctrine')->getManager()->flush();