我想使用Class Table Inheritance
:
/**
* @Entity
* @InheritanceType("JOINED")
* @DiscriminatorColumn(name="discr", type="string")
* @DiscriminatorMap({"player" = "Player", "admin" = "Admin"})
*/
class User
{
// ...
}
/** @Entity */
class Player extends User
{
// ...
}
/** @Entity */
class Admin extends User
{
// ...
}
我的问题是:
如果我有一个User
的集合,那么如何检查哪一个是Admin
哪一个是Player
。以及如何在那之后调用子类的方法?
答案 0 :(得分:1)
你如何设法获得Users
的集合?
Doctrine根据Player
的值实例化Admin
和DiscriminatorColumn
的具体类。您可以使用instanceof
检查您获得的实体:
switch(true){
$entity instanceof Player:
// do player's stuff
break;
$entity instanceof Admin:
// do admin's stuff
break;
}