Укажите тип таблицы / механизм хранения в Doctrine 2

Итак, как можно указать механизм хранения, который будет использоваться для данного объекта в Doctrine 2?

Я создаю таблицу, которая нуждается в полном текстовом индексе, и только механизм хранения MyISAM поддерживает полную текстовую индексацию в MySQL.

Как сторона: похоже, Doctrine 2 не поддерживает полное текстовое индексирование из коробки? Не полный поиск текста? Это верно?

Мне уже слишком два года, но зная, что это важно, потому что по какой-то причине оно не задокументировано, мы пытаемся добиться этого, но это решение

/** * ReportData * * @ORM\Table(name="reports_report_data",options={"engine":"MyISAM"}) * @ORM\Entity(repositoryClass="Jac\ReportGeneratorBundle\Entity\ReportDataRepository") */ class ReportData { 

Обновить:

См. Комментарий о добавлении «@Table (name =« table_name », options = {« engine »=« MyISAM »})», это лучший ответ.

======= Оригинал ниже ===========

Это непроверенный код, призванный помочь вам получить ответ, вам нужно будет прочитать много кода Doctrine2, чтобы выяснить, что вы хотите. Я потратил около 30 минут на чтение кода и не смог найти способ подтолкнуть массив $ options через слой ORM к этой функции уровня DBAL.

проверить Doctrine / DBAL / Platforms / MySQLPlatform.php

 427 // get the type of the table 428 if (isset($options['engine'])) { 429 $optionStrings[] = 'ENGINE = ' . $options['engine']; 430 } else { 431 // default to innodb 432 $optionStrings[] = 'ENGINE = InnoDB'; 433 } 

попробуйте жесткое кодирование, какой движок хочет там. Это почти наверняка сломает материал (например, внешние ключи не работают в MyISAM )

Если вы используете миграции doctrine2 ..

 $table = $schema->createTable('user'); $table->addColumn('id', 'integer'); $table->addOption('engine' , 'MyISAM'); $table->setPrimaryKey(array('id'));