Укажите тип таблицы / механизм хранения в Doctrine 2 - PullRequest
13 голосов
/ 23 сентября 2011

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

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

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

Ответы [ 3 ]

22 голосов
/ 21 июля 2014

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

7 голосов
/ 11 мая 2012

Обновление:

См. Комментарий о добавлении "@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 )

1 голос
/ 21 декабря 2012

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

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