Укажите тип таблицы/механизм хранения в Doctrine 2
Итак, как можно указать механизм хранения, который будет использоваться для данного объекта в Doctrine 2?
Я создаю таблицу, которая нуждается в полном текстовом индексе, и только механизм хранения MyISAM поддерживает полную индексацию текста в MySQL.
Как сторона: похоже, Doctrine 2 не поддерживает полное текстовое индексирование из коробки? Не полный поиск текста? Это правильно?
Ответы
Ответ 1
Мне уже слишком два года, но зная, что это важно, поскольку по какой-то причине он не документирован,
мы пытаемся достичь этого, но это решение
/**
* ReportData
*
* @ORM\Table(name="reports_report_data",options={"engine":"MyISAM"})
* @ORM\Entity(repositoryClass="Jac\ReportGeneratorBundle\Entity\ReportDataRepository")
*/
class ReportData
{
Ответ 2
Update:
См. комментарий о добавлении "@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)
Ответ 3
Если вы используете миграции doctrine2..
$table = $schema->createTable('user');
$table->addColumn('id', 'integer');
$table->addOption('engine' , 'MyISAM');
$table->setPrimaryKey(array('id'));