Doctrine json_array在键中配置错误的顺序

时间:2018-05-25 13:25:57

标签: json symfony doctrine entity persist

我对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确实改变了顺序。有没有办法防止这种情况发生?

1 个答案:

答案 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?