2014-12-12 3 views
2

Я получаю, что ограничения внешнего ключа отлично подходят для целостности базы данных и всего, но также огромные накладные расходы для использования ограничений при работе с таблицами, которые находятся в миллионах и растут.есть ли способ отключить ограничения symfony2/doctrine?

Я хочу удалить ограничения внешнего ключа из своего приложения. В прошлых проектах symfony2 я удалял ограничения вручную, но я предполагаю, может быть, есть способ просто сказать symfony2 сделать это?

Если кто-нибудь знает способ сделать это в рамках, пожалуйста, дайте мне знать :)

редактировать:

Скажем, например, в отношениях manyToMany, она автоматически создает отношения таблицу с соответствующими индексами, но также помещает ограничение внешнего ключа на оба столбца, или если у меня есть отношения oneToMany, это ставит ограничение внешнего ключа на эти отношения.

Я не хочу, чтобы эти ограничения внешнего ключа были созданы.

+0

Не могли бы вы уточнить? Не совсем уверен, что вы спрашиваете. –

+0

Редактировал для уточнения – skrilled

+0

Я вижу, что вы говорите. Вы создаете базу данных и затем генерируете сущности из этого? Если это так, просто оставьте ограничения внешнего ключа, и ваши сущности будут генерировать целые числа вместо полных объектов. –

ответ

2

Найдено в JIRA Доктрины в:

Вы можете отключить экспорт внешних ключей для конкретных моделей:

User: 
    attributes: 
    export: tables 
    columns: 

или с PHP:

$userTable->setAttribute(Doctrine::ATTR_EXPORT, Doctrine::EXPORT_TABLES); 

Теперь будет экспортировать только таблицу определение и ни один из внешних ключей. Вы можете использовать: none, таблицы, ограничения, плагины или все.

+0

Очень приятно ,Можете ли вы определить его для определенных полей? Мне интересно, потому что у нас есть база данных, где каждая таблица имеет столбец аудита, который привязывается к пользователю (например, created_by_user), но мы не хотим, чтобы ограничение внешнего ключа на нем было лишним. –

+0

В Doctrine2 нет такой константы 'Doctrine: ATTR_EXPORT'. То, о чем вы говорите, это [этот билет для Doctrine 1.2] (http://www.doctrine-project.org/jira/browse/DC-297), который не связан с Doctrine2. Как вы получили это, чтобы работать в проекте Symfony2/Doctrine2? – flu

+0

Я использовал метод yml, но, по сути, копировал концепцию из билета – skrilled

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