Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Doctrine 2 задыхается от столбцов таблицы Postgres

Автор вопроса: Scott T RogersОтветов: 1

Мы используем Doctrine 2 для нового проекта и столкнулись с проблемой: Doctrine 2 подавляет имена столбцов таблицы Postgres с пробелами в них. Например, предположим, что есть столбец с именем "Продавец". Хотя мы с вами знаем, что в имени столбца не должно быть пробела, он все равно существует. Базы данных были разработаны много лет назад, и на них работают критически важные бизнес-системы, поэтому имена столбцов нельзя изменить. Есть ли способ обойти эту проблему, не взламывая Doctrine, чтобы справиться с этой ситуацией? Если нет, то как бы вы предложили решить эту проблему на стороне Доктрины?

postgresqlormdoctrine-orm

Ответы

Ответ 1 · рейтинг 2 · Richard Huxton

Похоже на очередной плохо закодированный ORM

http://docs.doctrine-project.org/projects/doctrine-orm/en/2.0.x/reference/limitations-and-known-issues.html

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.

У вас есть только три варианта:

  1. Переименуйте все столбцы (или оберните все представлениями).
  2. Взлом доктрины
  3. Доктрина дампа

Ни один из них не идеален, и я не уверен, что в вашем случае будет проще всего.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы