2012-04-27 40 views
10

Gần đây tôi đã làm việc với Symfony2 và doctrine2 và đã nhận ra một kiểu dữ liệu đặc biệt được gọi là DC2Type: mảng mà một số vai trò Symfony2 nhất định được lưu dưới dạng. Đối với tôi nó trông giống như một mảng PHP được tuần tự hóa, trong đó một biểu thị tổng số phần tử, tôi là chỉ mục mảng.Kiểu dữ liệu mảng DC2Type trong mysql

Giá trị trông như thế này:

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";} 

Tôi muốn biết những gì datatype này là gì?

Và những gì nhận dạng sau đây có nghĩa:

s: 

Tôi đã tìm kiếm trên internet nhưng chưa có bất kỳ dữ liệu hữu ích.

Tôi cũng đã truy cập mục nhập sách dạy nấu ăn này - http://readthedocs.org/docs/doctrine-orm/en/2.0.x/cookbook/mysql-enums.html nhưng không tìm ra nguồn gốc.

Trả lời

24

Đây không phải là loại dữ liệu. Bạn có thể đã nhận thấy rằng loại cột là LONGTEXT. DC2Type: mảng là một chú thích của trường.

Học thuyết sử dụng nhận xét của trường làm nơi lưu trữ siêu dữ liệu của cột. Vì Mysql không cho phép bạn lưu trữ một mảng, Doctrine sử dụng DC2Type: array làm chú thích để biết cách unserialize nội dung.

Hãy xem liên kết bên dưới.

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

Từ liên kết mà bạn đề cập, bạn có thể thấy rằng những nhận xét DC2Type: enumvisibility chỉ ra rằng nội dung của lĩnh vực này là một lá cờ, chỉ ra rằng các bản ghi có thể nhìn thấy hay không. Nó không phải là một kiểu dữ liệu mới chút nào. Nó nên được coi là một chiến lược trợ giúp ở cấp cơ sở dữ liệu. Đối với Doctrine, đó là một kiểu dữ liệu tùy chỉnh.

9

Đây chỉ đơn giản là một chuỗi. Định dạng của nó là một mảng PHP được tuần tự hóa. S: tham chiếu đến kích thước hoặc độ dài của từng giá trị mục trong mảng.

e.g. s:32:"ROLE_SONATA_USER_ADMIN_USER_EDIT"

Nếu bạn đếm ký tự trong chuỗi VAI TRÒ, có 32.

Hope this helps.

Các vấn đề liên quan