Учение Symfony2 Получить ссылку на основе атрибута - PullRequest
1 голос
/ 10 ноября 2011

в моем проекте Symfony2 / Doctrine2 у меня есть объект Person, у которого есть дата рождения.У меня есть другая сущность Agegroup, которая хранит имя и некоторую дополнительную информацию для группы в зависимости от возраста в годах.

Пример:
Person Имя: xy Дата: 1980-05-06
Agegroup: с: 1 до: 10
Agegroup: с: 11 до: 20
Agegroup: с: 21 до: 30

Я хочу получить возрастную группук которому принадлежит человек в данный момент, изнутри сущности (на основе текущей даты).

то есть: $ person-> getCurrentAgeGroup ()

Поэтому мне нужно было бы получить доступ к другому классу хранилища внутри сущности, что, очевидно, не очень хорошая вещь.

Есть ли способ реализовать такую ​​функциональность?

Я прочитал Использование EntityManager внутри сущностей Doctrine 2.0 , что могло бы стать решением проблемы.К сожалению, я не нашел решения для реализации этого.Должен ли я как-то внедрить службу в сущность?

Может быть, есть и другие лучшие практики для решения этой проблемы?

1 Ответ

2 голосов
/ 10 ноября 2011

Недопустимо помещать менеджера сущностей в свои сущности.Лучшим подходом было бы создать пользовательский AgegroupRepository, который имеет метод getAgegroup(Person $person)

. Другой подход состоял бы в том, чтобы сделать возрастную группу свойством Person (с геттерами и сеттерами), создать пользовательскийPersonRepository и измените метод find(), чтобы создать экземпляр правильного экземпляра Agegroup при поиске человека.

Ваши объекты сущностей должны хранить только данные и бизнес-правила и не должны заниматься хранениеминформация.Для этого и нужны репозитории.

...