我使用Doctrine 2来管理我的实体,使用Zend_Auth来管理授权。我可以使用
轻松获取用户的完整详细信息$user = $this->em->getRepository('Entities\User')->findOneByUsername($username));
我成功授权,然后想要存储用户以便我可以访问某些详细信息
$storage = $auth->getStorage();
$storage->write($user);
这一切都运行正常,但我担心将完整的用户详细信息存储到Zend_Auth存储中。
我的想法是限制findOneByUsername返回的列(删除密码和其他结果)。阅读Doctrine文档,这似乎是不可能的。我也查看了queryBuilder(并且可以构建一个合适的查询),但似乎只能再次选择SELECT。
将查询结果限制为几列的最佳方法是什么?
答案 0 :(得分:1)
在会话中存储用户对象不是一个好习惯。您应该只存储用户ID并根据需要查询数据库,并将用户对象存储在实例变量中。有很多示例here如何编写自定义选择。请注意,$query->getResult()
返回的类型取决于select语句...如果不选择所有字段,将返回一个数组。