我有 3 种“用户”可以登录我的网站:
- 职员
- 住房提供者
- 住房寻求者
我让这些类中的每一个都扩展了 User Master 类,它实现了 Symfony2 AdvancedUserInterface
/**
* @ORM\Entity
* @ORM\Table(name="acme_users")
* @ORM\InheritanceType("JOINED")
* @ORM\DiscriminatorColumn(name="discr", type="string")
* @ORM\DiscriminatorMap({"provider" = "ProviderUser", "seeker" = "SeekerUser", "staff" = "StaffUser"})
*/
class User extends AdvancedUserInterface, \Serializable
{
//---
}
/**
* @ORM\Entity
* @ORM\Table(name="acme_seeker_users")
*/
class SeekerUser extends User
{
//---
}
/**
* @ORM\Entity
* @ORM\Table(name="acme_provider_users")
*/
class ProviderUser extends User
{
//---
}
/**
* @ORM\Entity
* @ORM\Table(name="acme_staff_users")
*/
class StaffUser extends User
{
//---
}
每种类型的用户都有不同的属性,同时继承了主用户类的一些共同属性。
我的问题是,如何确定和访问主用户类的子类?
所以,我说我在控制器中得到这样的用户用户:
// get logged in user
$user = $this->get('security.context')->getToken()->getUser();
// get any user by $id
$user = $this->getDoctrine()->getRepository('acmeUserBundle:User')->findOneById($id);
然后我如何确定它是哪个用户并随后访问该类型的用户的特定属性?
还是我要解决这个问题?