在$ _SESSION中存储Doctrine对象

sou*_*ver 3 php apache session doctrine

嘿,我现在有一个神秘的问题...我在我的网站上有一个登录服务.我使用Doctrine作为ORM.当用户为用户名和密码输入正确的组合时,我尝试将检索到的用户对象存储在我的会话中以供以后使用.

$user = new models\User;
$user = $em->getRepository('models\User')->findOneBy(array(
           'username' => $this->input->post('username'),
           'password' => hash("sha512", $this->input->post('password'))
           ));

   if($user != NULL) {
        session_start();
        $_SESSION['user'] = $user;
    redirect('user');
    }
Run Code Online (Sandbox Code Playgroud)

这是我登录的一部分

       /**
         * @ManyToOne(targetEntity="Country")
         * @JoinColumn(name="country_id", referencedColumnName="id")
         */
        private $country;
Run Code Online (Sandbox Code Playgroud)

用户有不同的属性,如国家,地址等.

所以我的问题是:如果用户的字段Country为null(在数据库中),登录工作正常......但如果用户被分配到一个国家(国家只有id和名称),我的系统将失败.在重定向之后,$ _SESSION中没有$ user没有php错误或类似的东西......变量就消失了

它可能更好只是在会话中存储id并在每个页面加载时加载用户?

Vla*_*sny 5

它可能更好只是在会话中存储id并在每个页面加载时加载用户?

当然.用户数据可能已经在下一页加载时已经改变,因此您显然需要刷新数据库中的数据,而不是从会话中读取用户的旧数据.

引用:

PHP:在$ _SESSION中存储'对象'