0

我有 3 种“用户”可以登录我的网站:

  1. 职员
  2. 住房提供者
  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);

然后我如何确定它是哪个用户并随后访问该类型的用户的特定属性?

还是我要解决这个问题?

4

1 回答 1

1

一个简单get_class($user)的就可以了。它将为您提供给定类的名称。或$user instanceof ProviderUser(或任何其他鉴别器)。

Doctrine 将返回您在鉴别器映射中定义的类型的实体。

于 2013-10-30T13:42:37.133 回答