Я недавно установил Doctrine2 на своем веб-сервере и все отлично работает. Я настроил все мои сущности, но теперь я нахожусь в точке, где хочу создать таблицу поиска, и я немного смущен, как это сделать. Я хочу, чтобы таблица, которая выглядит следующим образом:Создайте таблицу поиска с Doctrine2
tbl_Role tbl_User
+--------+----------+ +--------+----------+--------------+----------+
| id | Name | | id | Name | Password | Role |
+--------+----------+ +--------+----------+--------------+----------+
| 1 | Admin |
| 2 | User |
| 3 | Free |
+--------+----------+
Между Role
и User
таблицы состоит в OneToMany соотношение (один Role
имеет много Users
), и эта таблица не изменится в будущем. Я не хочу использовать Enums из-за проблемы с обновлением или исправлением с ними (если все-таки что-то изменилось)
Мой вопрос в том, как я могу представить эту таблицу поиска как объект Doctrine? Обычно, если я хочу создать новый User
, я должен получить установку Role
из базы данных и установить ее как ссылку в объекте User
. Мне это кажется немного дорогим. Было бы здорово, если бы у меня были только ID Role
в статических полях PHP, поэтому я могу установить их как ссылку для User
. Это возможно?
Другая проблема заключается в том, как получить значения поиска в базе данных. Могу ли я реализовать метод в самом сущности Role
, который выполняется после создания таблицы Role
? Таким образом можно было бы пометить конструктор как закрытый, и все значения будут присутствовать после миграции.
Вы знаете о ссылках на Доктрину? https://github.com/doctrine/doctrine2/blob/2.2/lib/Doctrine/ORM/EntityManager.php#L374-413. Учитывая фактический идентификатор базы данных роли, получение ссылки на доктрину является недорогим. У меня все равно возникнет соблазн просто сохранить роль как строку и вообще не иметь отношения «Доктрина 2». Вы можете создать таблицу ролей для другого программного обеспечения, если хотите. – Cerad