Я хотел бы использовать 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
s, как можно проверить, какой из них - Admin
а какой - Player
. И как вызвать метод подкласса после этого?
Как вам удается получить коллекцию Users
?
Doctrine создает конкретные классы Player
и Admin
зависимости от значения DiscriminatorColumn
. Вы можете проверить, какой объект вы получаете с instanceof
:
switch(true){
$entity instanceof Player:
// do player stuff
break;
$entity instanceof Admin:
// do admin stuff
break;
}