从Doctrine 2 / ZF中的查询返回选定的列

时间:2012-03-11 17:23:26

标签: zend-framework doctrine-orm

我使用Doctrine 2来管理我的实体,使用Zend_Auth来管理授权。我可以使用

轻松获取用户的完整详细信息
$user = $this->em->getRepository('Entities\User')->findOneByUsername($username));

我成功授权,然后想要存储用户以便我可以访问某些详细信息

$storage = $auth->getStorage();
$storage->write($user);

这一切都运行正常,但我担心将完整的用户详细信息存储到Zend_Auth存储中。

我的想法是限制findOneByUsername返回的列(删除密码和其他结果)。阅读Doctrine文档,这似乎是不可能的。我也查看了queryBuilder(并且可以构建一个合适的查询),但似乎只能再次选择SELECT。

将查询结果限制为几列的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

在会话中存储用户对象不是一个好习惯。您应该只存储用户ID并根据需要查询数据库,并将用户对象存储在实例变量中。有很多示例here如何编写自定义选择。请注意,$query->getResult()返回的类型取决于select语句...如果不选择所有字段,将返回一个数组。