【问题标题】:Why can't I modify my current user entity in symfony?为什么我不能在 symfony 中修改我当前的用户实体?
【发布时间】:2014-12-15 10:00:01
【问题描述】:

我偶然发现了 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 中有效,但显然不再有效。或者,也许我做了一些糟糕的配置设置。

【问题讨论】:

  • 该用户是否已登录?
  • 是的,就是当前登录用户。
  • 试试var_dump($this->getUser()) 或/和var_dump($this->get('doctrine')->getRepository('MyBundle:User')->find($this->getUser()->getId()))
  • 这将如何帮助我修改数据库中的实体?
  • 你能打印你的用户模型吗?

标签: symfony


【解决方案1】:

你必须坚持你的对象:

$this->get('doctrine')->getManager()->persist($managedUserEntity);
$this->get('doctrine')->getManager()->flush();

【讨论】:

  • 否,实体已被管理。但无论如何:如果我打电话给坚持,它的行为不会有一点改变。试过了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-09-21
  • 2018-11-24
  • 1970-01-01
  • 1970-01-01
  • 2012-02-04
  • 2011-08-23
  • 2015-10-20
相关资源
最近更新 更多