我使用 symfony 和教义作为我的 ORM。
对于可用类型,我有:
- 大批
- 简单数组
- json_array
我想知道它们之间的区别是什么:我什么时候使用其中一个?
我可以为他们每个人做一个演示来说明差异吗?
我已经在某些应用程序中使用了 simple_array,但我发现我不理解 formType…(或者我没有很好地使用它!?)
_为了说明我的问题_,这里有一个例子:
我有一个必须在特定日期运行的任务所以我创建了带有 days 属性的 TaskEntity
天数是:
$days = array(
1=>true,
2=>true,
3=>true,
4=>true,
5=>true,
6=>false,
7=>false
);
但我不知道选择上述哪种类型……
原文由 0x1gene 发布,翻译遵循 CC BY-SA 4.0 许可协议
对于你的问题
simple_array
是正确的方式,正确的方式也可能创建七个布尔字段。然而,这里有一点vademecum:
了解类型在原则中如何工作的最好方法是阅读类型的代码,这是因为有一些细节被认为是理所当然的,或者在文档中没有真正解释。
所以你可以进入
找到你的类型并检查它的方法是否如你所愿。
这里有一些细节:
简单数组
在
/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/SimpleArrayType.php
它只是一个
implode()
/explode()
项目,只存储值并且它很有用,因为您可以轻松查询数据库。大批
在
/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/ArrayType.php
调用 PHP 到
serialize()
/unserialize()
,它比json_array
快。查看代码我认为它也适用于对象。显然,如果您将该字段视为纯文本,则它是不可理解的。json_array
在
/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/JsonArrayType.php
它调用
json_encode()
/json_decode()
,如果您查看该字段,您可以看到一个未格式化的 JSON 数组,但它比 PHP 的序列化对象更具可读性,并且确实更便携(JSON 无处不在)。2018 年 6 月更新