Конфигурация Doctrine json_array неправильный порядок ключей

У меня есть эта странная проблема с конфигурацией поля 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 меняет порядок. Есть ли способ предотвратить это?


person Dion Snoeijen    schedule 25.05.2018    source источник


Ответы (1)


Использование одной из перечисленных версий предотвратит такое поведение:

$v1 = [
    'choices' => [
        'Other',
        'Male',
        'Female'
    ]
];

$v2 = [
    'choices' => [
        ['label' => 'Other', 'value' => 'other'],
        ['label' => 'Male', 'value' => 'male'],
        ['label' => 'Female', 'value' => 'female']
    ]
];

Дополнительную информацию вы можете найти здесь Гарантирует ли JavaScript порядок свойств объектов?

person vpalade    schedule 25.05.2018
comment
Спасибо! Это может быть сделано, если конструктор форм symfony может обрабатывать эту структуру, не делая исключений для выбора. - person Dion Snoeijen; 28.05.2018