24

私は最近 Symfony2 と doctrine2 を使用しており、特定の Symfony2 ロールが保存される DC2Type:array と呼ばれる独特のデータ型に気付きました。私には、a が要素の総数を表し、i が配列インデックスであるシリアル化された PHP 配列のように見えます。

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

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が、起源がわかりませんでした。

4

2 に答える 2

38

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

Doctrine はフィールドのコメントを列のメタデータの保存場所として使用します。Mysql では配列を保存できないため、Doctrine は DC2Type:array をコメントとして使用して、コンテンツのシリアル化を解除する方法を認識します。

以下のリンクをご覧ください。

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

あなたが言及したリンクから、コメント DC2Type:enumvisibility は、フィールドの内容がフラグであり、レコードが表示されているかどうかを示していることを示していることがわかります。これはまったく新しいデータ型ではありません。これは、データベース レベルでのヘルパー戦略と見なす必要があります。Doctrine の場合、これはカスタム データ型です。

于 2012-05-21T17:29:40.853 に答える