Мы используем Doctrine 2 для нового проекта и столкнулись с проблемой: Doctrine 2 подавляет имена столбцов таблицы Postgres с пробелами в них. Например, предположим, что есть столбец с именем «Продавец». Хотя мы с вами знаем, что в имени столбца не должно быть пробела, он все равно существует. Базы данных были разработаны много лет назад, и на них работают критически важные бизнес-системы, поэтому имена столбцов нельзя изменить. Есть ли способ обойти эту проблему, не взламывая Doctrine, чтобы справиться с этой ситуацией? Если нет, то как бы вы предложили решить эту проблему на стороне Доктрины?
Doctrine 2 задыхается от столбцов таблицы Postgres
Ответы (1)
Похоже на очередной плохо закодированный ORM
http://docs.doctrine-project.org/projects/doctrine-orm/en/2.0.x/reference/basic-mapping.html
Говорит полезные вещи, такие как: «Вы не можете использовать символы, отличные от [a-zA-Z0-9_]+, они нарушат несколько операторов SQL» и «Заключение идентификатора в кавычки не должно использоваться для разрешения использования нестандартных символов, таких как тире " и "Schema-Tool, вероятно, будет иметь проблемы, когда цитирование используется для учета регистра".
Похоже, это еще одна ORM, созданная кем-то, кто не хочет, чтобы она работала с реальными базами данных. Наличие столбцов с пробелами и т. д. в них не является блестящей идеей, но это совершенно законно в SQL.
У вас есть только три варианта:
- Переименуйте все столбцы (или оберните все представлениями).
- Взлом доктрины
- Доктрина дампа
Ни один из них не идеален, и я не уверен, что в вашем случае будет проще всего.