2010-01-13 3 views
0

Я пытаюсь обновить мою доктрину ORM от 1.1.6 до 1.2.1, но я включил проблему BC с именами таблиц.PHP имена Doctrine 1.2

Некоторые из моих имен таблиц несколько слов (например, t_foo_bar для класса Foobar), где генерируется префикс t_ автоматически:

$manager->setAttribute(Doctrine_Core::ATTR_TBLNAME_FORMAT, 't_%s'); 

Это хорошо работало в предыдущих версиях. В 1.2.1, однако, похоже, что доктрина ищет t_foobar (вместо t_foo_bar с подчеркиванием).

Вы знаете, как решить эту проблему без изменения имен таблиц?

+0

привет, я использую версию 1.2.4, но я h = получение ошибок. Мне нужна конфигурация для этого. – Karthik

ответ

2

В методе setTableDefinition() вашей модели вы можете позвонить $this->setTableName('t_foo_bar'), чтобы указать имя таблицы явно. Это намного лучше, как если бы какой-то класс переименовывался, приложение будет продолжать работать.

+0

Да, это работает без установки атрибута ATTR_TBLNAME_FORMAT, что означает, что имя должно быть установлено для каждой таблицы. Я предпочел однострочный подход, хотя это и будет сделано. Спасибо за ваш быстрый ответ! – Ofir

1

О, у меня здесь через Google. Я только что начал symfony и хочу добавить приложение symfony + doctrine к существующему веб-приложению.

Я нашел этот материал в документации Doctrine (обратите внимание второй линии):


Group: 
    **tableName: group_table** 
    columns: 
    id: 
     type: integer(4) 
     autoincrement: true 
     primary: true 
    name: 
     type: string(255) 
    relations: 
    Users: 
     foreignAlias: Groups 
     class: User 
     refClass: GroupUser 

Кажется, вы можете определить имя таблицы в файле YML тоже.

Смежные вопросы