mysql - mysql中的DC2Type数组数据类型是什么

标签 mysql symfony doctrine-orm

我最近一直在使用 Symfony2 和 doctrine2,并且发现了一种称为 DC2Type:array 的特殊数据类型,某些 Symfony2 角色被保存为。对我来说,它看起来就像一个序列化的 PHP 数组,其中 a 表示元素的总数,i 是数组索引。

值看起来像这样:

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但没搞清楚来源。

最佳答案

这不是数据类型。您可能已经注意到列类型是 LONGTEXT。 DC2Type:array是字段的注释。

Doctrine 使用字段的注释作为列的元数据存储位置。由于 Mysql 不允许您存储数组,Doctrine 使用 DC2Type:array 作为注释以了解如何反序列化内容。

看看下面的链接。

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

从你提到的链接可以看到注释DC2Type:enumvisibility表示该字段的内容是一个flag,表示记录是否可见。它根本不是一种新的数据类型。它应该被认为是数据库级别的辅助策略。对于 Doctrine,它是一种自定义数据类型。

关于mysql - mysql中的DC2Type数组数据类型是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10346152/

相关文章:

mysql - 如果 mysql 中整个列值不相同,则应返回单个列值

php - 生成 Plancast 风格的短 URL 的有效方法是什么?

MySQL建表

javascript - 使用自动完成和相同的 ID 填充多个字段

php - Symfony2 : How to modify the current user's entity using a form?

php - Symfony & FOSUserBundle : 3 different profiles, 取决于角色

php - 从XML文件中获取一些数据并输入到sql中

unit-testing - 在 symfony2 核心和 bundle 上运行 phpunit 测试

mysql - Doctrine2 QueryBuilder HAVING max(field) IS NULL

php - 如何在模型类中读取 Symfony2 中的配置值