托管实体未显示为托管

时间:2014-08-19 14:44:23

标签: symfony doctrine-orm

我遇到的问题是我在一个包中设置用户传递给安全上下文。这证实了我,这工作正常。但是,每当我通过执行此操作从另一个包中的安全上下文中检索该用户时:

$this->getUser()

我得到了正确的实体,所有数据都在那里,但是Doctrine说它不是一个管理实体。

在令牌上设置用户的代码如下:

    protected function logUserIn($userId, $name, $locale, $roles, $permissions)
    {
        $csbAuthUser = new User($name, $userId, $roles, $locale, $permissions);
        $token = new UsernamePasswordToken(
            $csbAuthUser,
            null,
            'csb',
            $roles
        );

        if ($this->csbAuthEntityString) {
            $user = $this->entityManager->getRepository($this->csbAuthEntityString)-    >findOneBy(array(
                'connectSBUser' => $userId,
            )
        );

        $user->setUsername($name);
        $user->setRoles($roles);
        $user->setLocale($locale);
        $user->setPermissions($permissions);

        $token = new UsernamePasswordToken(
            $user,
            null,
            'csb',
            $roles
        );
    }
    $this->securityContext->setToken($token);

这是一个问题,因为每次我想更新与用户实体有关系的任何东西时,Doctrine说它已经在关系中找到了一个新的实体。

1 个答案:

答案 0 :(得分:0)

您以任何方式获得User的实例 - 但您在方法顶部创建的默认用户不是托管对象。从您的实体经理返回的实体将是。

$this->csbAuthEntityString的价值是多少?你确定它会进入IF声明吗?我会用一些调试输出仔细检查一下。