对于你的问题simple_array
是正确的方法,正确的方法也可能创建七个布尔字段。
然而,这里有一点vademecum:
了解类型在原则中如何工作的最好方法是阅读类型的代码,这是因为有一些细节被认为是理所当然的,或者在文档中没有真正解释。
所以你可以进入
/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/Type.php
找到你的类型并检查它的方法是否如你所愿。
这里有一些细节:
简单数组
在/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/SimpleArrayType.php
return implode(',', $value);
它只是一个implode()
/explode()
项,只存储值,它很有用,因为您可以轻松地查询数据库。
大批
在/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/ArrayType.php
return serialize($value);
调用 PHP 到serialize()
/ unserialize()
,它比json_array
. 查看代码我认为它也适用于对象。显然,如果您将该字段视为纯文本,则它是不可理解的。
json_array
在/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/JsonArrayType.php
return json_encode($value);
它调用json_encode()
/ json_decode()
,如果您查看该字段,您可以看到一个未格式化的 JSON 数组,但它比 PHP 的序列化对象更具可读性,并且确实更便携(JSON 无处不在)。
2018 年 6 月更新
- 现在这里有一个完整且更新的文档
- 不推荐使用 json_array 以支持 json 类型,它将利用 json 字段的新数据库功能