2011-09-23 6 views
11

Doctrine 2の特定のエンティティに使用するストレージエンジンを、どのように指定できますか?Doctrine 2のテーブルタイプ/ストレージエンジンを指定する

フルテキストインデックスが必要なテーブルを作成していますが、MyISAMストレージエンジンだけがフルテキストインデックスをサポートしています。

Doctrine 2はフルテキストインデックス作成をサポートしていないようです。全文検索もありませんか?あれは正しいですか?

+1

ある 、何らかの理由で文書化/ブラウズ/ DDC-972 –

+0

また、(1.1):http:// www。 doctrine-project.org/documentation/manual/1_1/zh/defining-models:indexes:special-indexes –

+0

@Jared私は多くのことを考えました...チケットのリンクに感謝します。 –

答えて

6

更新:

は "@Table(名前=" TABLE_NAME "オプション= { "エンジン"= "MyISAMテーブルを"})" の追加についてのコメントを参照してください、それは良い答えです。 ===========

以下

=======オリジナルこれはあなたが答えを得るのを助けることを目的としたテストされていないコードである、あなたはDoctrine2をたくさん読んでする必要があります。あなたが欲しいものを見つけ出すためのコード。私は約30分のコードを読んでいましたが、$ options配列をORMレイヤーを通してこのDBALレイヤーの関数にプッシュする方法が見つかりませんでした。

チェックアウトドクトリン/ DBAL /プラットフォーム/ 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   } 

what engineがそこにしたいハードコーディングしてみてください。それはほぼ確実に私が遅すぎる2年だ

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

これは@Table(name = "table_name"、options = {"engine" = "MyISAM"}) ' –

+1

@PaulJacobseを使用してテーブルに設定できます。これは回答として投稿する –

1

あなたはdoctrine2の移行を使用している場合しかしものを破るが、それはにISNので、これを知ることは重要でありますhttp://www.doctrine-project.org/jira:「Tは、私たちがこれを達成するために苦労してきたが、これはこれは、ソースを編集せず 『可能』ではないかもしれないソリューション

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

...(例えば、外部キーdont work in MyISAM

+0

options = {"engine": "MyISAM"} –

+1

これは2015年に役立ちます...遅くはない... – Dennis

+0

ありがとう!、なぜこれが答えとしてマークされているのか分かりません。 –

関連する問題