Я занимаюсь рефакторингом веб-сайта в Zend Framework 1.11 / Doctrine 2 и у меня есть несколько устаревших таблиц, содержащих имена столбцов с подчеркиванием (например, plant_id). (Изначально был довольно интимным, но Доктрина неизменно впечатлила меня!)
Я успешно установил сущность доктрины (следуя превосходной книге У.Дж. Гилмора «Легкий PHP с Zend Framework»), но у меня возникают проблемы, когда мы используем магический искатель findOne от Doctrine с устаревшими именами столбцов, которые содержат подчеркивание
код
$plant = $this->em->getRepository('Entities\Plant')
->findOneByPlant_id('3571');
возвращает ошибку
Message: Entity 'Entities\Plant' has no field 'plantId'. You can therefore not call 'findOneByPlant_id' on the entities' repository
(Между прочим, Doctrine в противном случае выглядит нормально - мы создали сущность с этим именем нашего столбца и можем извлечь этот столбец.)
Тем временем мы решили эту проблему, построив запрос с помощью построителя запросов.
Есть ли какое-либо другое более простое решение, для которого не требуется слишком много кода, кроме изменения всей таблицы целиком для удаления подчеркивания (не так просто, поскольку существует много устаревшего кода, который мы должны были бы переработать)?