Итак, как можно указать механизм хранения, который будет использоваться для данного объекта в 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'));