Доктрина 2.1 - Сопоставить сущность с несколькими таблицами
У меня следующая ситуация с базой данных:
wp_users (user table generated by wordpress)
ID | user_login | ...
wp_sp_user (extension to the wp_users table)
ID (FK) | surname | address | ...
Теперь я уже часами пытаюсь "слить" эти две таблицы в одну User
сущность, например:
class User {
var ID;
var user_login;
var surname;
var address;
...
}
Есть ли способ выполнить такое отображение без изменения wp_user
таблица (которую я не хочу делать по причинам обновления)?
2 ответа
Иногда рефакторинг базы данных невозможен, или у таблицы есть свой собственный raison d'être. В этом случае вы можете использовать наследование. Ваш класс пользователя может продлить учетную запись. Подключите учетную запись к wp_users и добавьте в нее таблицу wp_sp_user. Пользовательский класс будет использовать столбцы двух таблиц.
Вот документация доктрины:
http://docs.doctrine-project.org/en/latest/reference/inheritance-mapping.html
Это невозможно. Это также не имеет смысла делать это.
Вам нужно будет физически объединить таблицы в MySQL и создать сущность Doctrine для этой таблицы. Это единственный способ убедиться, что ваши данные чистые и полностью нормализованы.
Другое возможное решение - создать одну сущность для каждой таблицы и использовать бизнес-объект для объединения результатов каждой. Это не очень хорошее решение, так как вам придется обрабатывать ограничения на прикладном уровне, и вы удвоите количество запускаемых вами запросов.