我对json_array字段配置有这个奇怪的问题。
我已经配置了用于存储某些配置的字段。它的配置如下:
<field name="config" type="json_array" />
例如,我有一个这样的数组:
[
'choices' => [
'Other' => 'other',
'Male' => 'male',
'Female' => 'female'
]
]
我设置了实体属性:
$entity->setConfig($config);
我坚持到数据库。 结果如下:
"choices": {
"Male": "male",
"Other": "other",
"Female": "female"
}
当我在同一个数组上执行json_encode时,顺序不会改变,但Doctrine确实改变了顺序。有没有办法防止这种情况发生?
答案 0 :(得分:1)
使用其中一个枚举版本可以防止此行为:
$v1 = [
'choices' => [
'Other',
'Male',
'Female'
]
];
$v2 = [
'choices' => [
['label' => 'Other', 'value' => 'other'],
['label' => 'Male', 'value' => 'male'],
['label' => 'Female', 'value' => 'female']
]
];
您可以在此处找到更多信息Does JavaScript Guarantee Object Property Order?