php - Symfony 3 - 无法使用会话获取用户
问题描述
我的项目中有一个用户实体。每次页面加载,我都会费心在数据库中使用查询来恢复用户。
我的目标是在登录后直接将其放入会话变量中,以便在我需要时将其取回。
在我的代码中,如果我对此进行测试:
$user = $this->checkBDD($mail,$fredurne,$nomComplet);
dump($user);
$this->session->set('user',$user);
$user = $this->session->get('user');
dump($user);
我有 :
所以,会议似乎工作。
现在,我将它投入应用。我创建了一个函数:
$user = $this->getUtilisateur($mail,$fredurne,$nomComplet);
dump($user);
和
public function getUtilisateur($mail,$fredurne,$nomComplet)
{
if(!$this->session->has('user'))
{
dump("user not in session");
$user = $this->checkBDD($mail,$fredurne,$nomComplet);
$this->session->set('user',$user);
}
else
{
dump("user in session");
$user = $this->session->get('user');
}
return $user;
}
我有 :
所以,我不明白有什么问题
解决方案
问题:
Doctrine 实体存储在会话中但需要刷新
但是当您从会话中检索实体时:Doctrine 工作单元不知道它必须处理该实体
在那之后你应该有一些关于 Doctrine 延迟加载的问题。
Session 不好存储一个实体。
更好的解决方案是:
- 在您的服务中注入 Doctrine 实体管理器
- 仅在会话中存储 id
getUtilisateur
如果尚未完成,则在方法上检索具有 id 的用户
推荐阅读
- c++ - std::from_chars 在 MSVC 下无法编译
- android-source - 将OTA下载到Android设备后会发生什么
- android - 如何以编程方式更改约束布局中的约束边距?
- css - CSS 动画,FadeIn / FadeOut 2 连续图像
- javascript - 将表单序列化到 localStorage / 在页面重新加载后恢复它(没有 jQuery)
- python - 如何同时在 CNN 和 Gist 数据上训练 Keras 模型?
- windows - Win10:Cmd批处理文件到Powershell的转换
- react-native - 无法使用带有 React Native 项目的 react-apollo-hooks 使 Mutation 工作
- reactjs - 反应状态值不会更新
- c - 大小为 8 的无效读取。尝试制作 2D 数组