Symfony 1.4 не создает геттеры для полей с подчеркиванием перед числами.

У меня есть таблица базы данных, содержащая поля с именами вроде xx_yy_1, xx_yy_2 и т. д. К сожалению, Doctrine не сгенерировала геттеры/сеттеры для этих полей. Я думаю, это происходит только в том случае, если перед числом стоит знак подчеркивания. Как я могу решить эту проблему?


person mene    schedule 21.09.2012    source источник


Ответы (2)


Это непоследовательное поведение в Doctrine. Вы можете получить доступ к таким полям, как $record->getXxYy_1() или $record->get('xx_yy_1'). DocBlock в верхней части сгенерированного класса базовой модели неверен, поэтому автозаполнение может предлагать неправильные имена методов для этих полей.

person 1ed    schedule 21.09.2012
comment
И то, и другое не сработало. Я добавил в свой класс геттер-методы, расширяющие базовый класс, но не знаю, как правильно их заполнить. :-/ - person mene; 22.09.2012
comment
Возможно, вы что-то упустили, потому что у меня это работает без каких-либо изменений модели классов (имена полей, такие как address_line_1, могут быть доступны с помощью getAddressLine_1() или get('address_line_1')). Если вам нужен собственный геттер, вы также можете использовать в нем return parent::_get('xx_yy_1'). - person 1ed; 22.09.2012
comment
добавление публичной функции getXxYy4(){ return parent::_get('xx_yy_4'); } работает на меня. Спасибо! :-) - person mene; 24.09.2012

Это проблема доктрины. Вы должны называть свои столбцы без подчеркивания + числа, например:

xx_yy1 вместо xx_yy_1.

Итак, метод всегда ->getXxyy1(); или ->получить('xx_yy1')

person glerendegui    schedule 23.09.2012
comment
как написано выше, это будет только вариант, если это абсолютно необходимо. Это бы испортило DB-Sync... - person mene; 24.09.2012