2012-04-27 30 views
10

私は最近Symfony2とdoctrine2を使って作業していて、DC2Typeという特有のデータ型を実現しました:特定のSymfony2の役割が保存される配列。私には、直列化されたPHP配列のように見えます。ここで、aは要素の総数を表し、iは配列のインデックスです。mysqlのDC2Type配列データ型とは

値は次のようになります。

a:15:{i:0;s:32:"ROLE_SONATA_USER_ADMIN_USER_EDIT";i:1;s:32:"ROLE_SONATA_USER_ADMIN_USER_LIST";i:2;s:34:"ROLE_SONATA_USER_ADMIN_USER_CREATE";i:3;s:32:"ROLE_SONATA_USER_ADMIN_USER_VIEW";i:4;s:34:"ROLE_SONATA_USER_ADMIN_USER_DELETE";i:5;s:36:"ROLE_SONATA_USER_ADMIN_USER_OPERATOR";i:6;s:34:"ROLE_SONATA_USER_ADMIN_USER_MASTER";i:7;s:33:"ROLE_SONATA_USER_ADMIN_GROUP_EDIT";i:8;s:33:"ROLE_SONATA_USER_ADMIN_GROUP_LIST";i:9;s:35:"ROLE_SONATA_USER_ADMIN_GROUP_CREATE";i:10;s:33:"ROLE_SONATA_USER_ADMIN_GROUP_VIEW";i:11;s:35:"ROLE_SONATA_USER_ADMIN_GROUP_DELETE";i:12;s:37:"ROLE_SONATA_USER_ADMIN_GROUP_OPERATOR";i:13;s:35:"ROLE_SONATA_USER_ADMIN_GROUP_MASTER";i:14;s:10:"ROLE_ADMIN";} 

私は、このデータ型が何であるかを知りたいですか?

そして、何を、次の識別子は、意味:私はインターネットを検索しましたが、任意の有用なデータを持っていない

s: 

私はこの料理のエントリにもぶつかった - http://readthedocs.org/docs/doctrine-orm/en/2.0.x/cookbook/mysql-enums.htmlしかし、起源を把握していない。

答えて

24

これはデータ型ではありません。列の型がLONGTEXTであることがわかりました。 DC2Type:配列はフィールドのコメントです。

Doctrineは、フィールドのコメントを列のメタデータ格納場所として使用します。 Mysqlは配列を格納することを許可していないので、Doctrineはコンテンツを直列化解除する方法を知るために、DC2Type:arrayをコメントとして使用します。

下記のリンクをご覧ください。 enumvisibilityフィールドの内容は、レコードが見えるかどうかであることを示すフラグであることを示している:あなたが言及したリンクから

https://github.com/doctrine/dbal/issues/1614

は、あなたはコメントDC2Typeがあることがわかります。新しいデータ型ではありません。これは、データベースレベルでのヘルパー戦略と見なすべきです。 Doctrineでは、カスタムデータ型です。

9

これは単なる文字列です。そのフォーマットはシリアライズされたPHP配列です。 s:は、配列内の各項目値のサイズまたは長さを表します。

e.g. s:32:"ROLE_SONATA_USER_ADMIN_USER_EDIT"

あなたはROLE文字列内の文字をカウントした場合、このことができます32

希望はあります。

関連する問題