Подтвердить что ты не робот

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

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

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

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

4b9b3361

Ответ 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'));