BonBonSlick
@BonBonSlick
Vanilla Web Architect

Комбинированные oneToMany связи User->RelationCollection[ApiTokenCollection, ResetPassCollection]?

class User implements UserInterface, IAggregateRoot {
    public ActivationTokenCollection                   $activationTokens;
    public ApiTokenCollection                          $apiTokens;
    public ResetPasswordTokenCollection                 $resetPassTokens;
// other tokens...


Как бы построить маппинг что бы получилось
class User implements UserInterface, IAggregateRoot {
    public TokensCollections                   $tokens;
// other tokens...

public function getTokens(){
// output ArrayCollection->toArray() ---> [ActivationTokenCollection, ApiTokenCollection, ResetPasswordTokenCollection]
}

public function getApiTokens(){
// output ArrayCollection->toArray() [ApiTokenCollection]
}

У разных токено есть некоторые иные поля, все они идут конечно от основного Абстрактного токена.
Такое можно провернуть и с другими сущностями, к примеру у юзера есть куча файлов разных типов.
Лепить по коллекции на каждый тип файла не вариант.
У юзера может быть множественная связь множественных связей.
  • Вопрос задан
  • 40 просмотров
Решения вопроса 1
@Flying
Если я правильно понимаю ваш вопрос, то вы можете сделать AbstractToken базовой entity для inheritance mapping, а остальные виды токенов наследовать от него, попутно определяя их в @DiscriminatorMap.

Тогда, если вам где-то будет необходимо получать список только определённого вида токенов - достаточно будет в опредении, к примеру, @OneToMany, указать в targetEntity нужный вам класс entity, а если нужны будут все токены - то можно будет указывать AbstractToken
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы