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

Использование одной из перечисленных версий предотвратит такое поведение:
$v1 = [
'choices' => [
'Other',
'Male',
'Female'
]
];
$v2 = [
'choices' => [
['label' => 'Other', 'value' => 'other'],
['label' => 'Male', 'value' => 'male'],
['label' => 'Female', 'value' => 'female']
]
];
Более подробную информацию вы можете найти здесь Гарантирует ли JavaScript порядок собственности объекта?
Спасибо! Это могло бы случиться, если построитель форм Symfony может обрабатывать эту структуру без исключения для выбора.