Модель Doctrine 2: как установить имя таблицы с - в нем?

Как мне назвать переменную строки таблицы модели Doctrine 2 (например, url-name — это имя строки таблицы), и я попробовал это:

/** @Column(name="url-name", type="string") */
private $urlName;

// or I tried also

/** @Column(name="`url-name`", type="string") */
private $url_name;

Но он не извлекает строку $urlName (результат этой строки пуст, но другие строки/остальные извлекаются правильно).


person Poru    schedule 28.11.2010    source источник


Ответы (1)


Вы не можете использовать символ минус как часть имени столбца. Просто взгляните на этот запрос:

SELECT url-name ...

Это означает вычитание имени из URL-адреса точно так же, как price * tax означает умножение цены на налог. Используйте _ вместо -.

person Crozin    schedule 28.11.2010
comment
Почему я не должен использовать символ минус как часть имени столбца? Я должен установить в `` тогда он должен работать, например. SELECT `url-name` FROM ... кстати. см. обновление в коде выше - person Poru; 29.11.2010
comment
Я не думаю, что это проблема доктрины ... скорее, как упомянул Крозин, это просто стандартное именование ... не использовать символы, такие как * -, вместо этого используйте _, что должно работать нормально. Даже если вы поставите ``, что правильно, если вы выполните запрос, механизм базы данных вернет ошибку - person allenskd; 29.11.2010
comment
Единственная разница между url_name, urlName или url-name заключается в их эстетике. И да, лично я тоже считаю, что url-name выглядит красивее, чем url_name, но первая форма просто недействительна. Использование обратных кавычек ('' в Oracle, [] в MSSQL и т. д.) — наихудший обходной путь. Кроме того... вы используете Doctrine, так какая разница? Вероятно, вы всегда будете работать над схемой Doctrine, используя urlName. - person Crozin; 29.11.2010