我正在学习Symfony而我正在创建自己的UserBundle,因为我必须使用在线API来管理用户。所以我加入了具有doctrine ManyToOne关系的User和Group对象。目前一切正常。
Symfony正在实现每个页面上的User对象并获取组的id(参见var_dump),但我想从Symfony获取每个页面上的整个Group对象而不仅仅是它的id。
User {#467 ▼
-id: 104
-uuid: "~"
-username: "~"
-lastLogin: null
-websiteActivity: null
-clientToken: "1c667ad4-07e2-4ffa-8db1-9997eadbbc4b"
-accessToken: "b183f850ce4d4decb07cb7485c1d0a88"
-dataCheck: DateTime {#457 ▼
+"date": "2017-08-27 18:23:31.000000"
+"timezone_type": 3
+"timezone": "Europe/Berlin"
}
-reputation: 0
-group: Group {#456 ▼
+__isInitialized__: false
-id: 4
-inheritId: null
-name: null
-chatColor: null
-websiteName: null
-websiteColor: null
…2
}
}
如果你知道如何做到这将是非常有帮助的。
非常感谢。
答案 0 :(得分:1)
请记住,控制器上的$this->getUser()
是以下内容的别名:
$this->container->get('security.token_storage')->getToken()->getUser();
您可以查看Using a Custom Query to Load the User。您可以使用它自动加入您的组实体:
public function loadUserByUsername($username)
{
return $this->createQueryBuilder('u')
->select('u, g')
->leftJoin('u.group', 'g')
->where('u.username = :username OR u.email = :email')
->setParameter('username', $username)
->setParameter('email', $username)
->getQuery()
->getOneOrNullResult();
}
这是Symfony版本中的previously documented< = 2.5但是为了清晰起见removed from the documentation,可能是因为大多数情况下都不需要它。如果您愿意,也可以将其移至UserRepository
(如果存在)并从那里调用。
这将在用户登录时生效。尝试查看是否会自动检索您的Group对象。