与用户请求组对象
Request group object with the user
我实际上正在学习 Symfony,并且我正在制作自己的 UserBundle,因为我必须使用在线 API 来管理用户。所以我加入了具有 ManyToOne 关系的 User 和 Group 对象。目前一切正常。
Symfony 在每个页面上实现用户对象并获取组的 ID(参见 var_dump),但我希望 Symfony 在每个页面上获取整个组对象,而不仅仅是 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
}
}
如果您知道该怎么做,那将非常有帮助。
非常感谢。
请记住,控制器上的 $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();
}
这是 previously documented in Symfony versions <= 2.5 but was removed from the documentation 为了清楚起见,可能是因为大多数情况下不需要它。如果你愿意,你也可以将它移动到你的UserRepository
(如果它存在)并从那里调用它。
这将在用户登录时生效。试试看是否会自动检索您的组对象。
我实际上正在学习 Symfony,并且我正在制作自己的 UserBundle,因为我必须使用在线 API 来管理用户。所以我加入了具有 ManyToOne 关系的 User 和 Group 对象。目前一切正常。
Symfony 在每个页面上实现用户对象并获取组的 ID(参见 var_dump),但我希望 Symfony 在每个页面上获取整个组对象,而不仅仅是 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
}
}
如果您知道该怎么做,那将非常有帮助。
非常感谢。
请记住,控制器上的 $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();
}
这是 previously documented in Symfony versions <= 2.5 but was removed from the documentation 为了清楚起见,可能是因为大多数情况下不需要它。如果你愿意,你也可以将它移动到你的UserRepository
(如果它存在)并从那里调用它。
这将在用户登录时生效。试试看是否会自动检索您的组对象。