2012-04-27 27 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:數組是該字段的註釋。

原則將該字段的註釋用作列的元數據存儲位置。由於Mysql不允許存儲數組,因此Doctrine使用DC2Type:數組作爲註釋以便知道如何反序列化內容。

看看下面的鏈接。

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

你所提到的鏈接,你可以看到評論DC2Type:enumvisibility表示該字段的內容是一個標誌,表示該記錄是可見或不可見。它根本不是一種新的數據類型。它應該被視爲數據庫級別的幫助策略。對於Doctrine來說,這是一種自定義數據類型。

9

這只是一個字符串。它的格式是一個序列化的PHP數組。 s:表示數組中每個項目值的大小或長度。

e.g. s:32:"ROLE_SONATA_USER_ADMIN_USER_EDIT"

如果算上中的角色字符串中的字符,有32

希望這有助於。

相關問題