У меня проблема с сохранением объекта JSON в БД. Я пробовал другой тип полей, но без успешных результатов.
Данные, которые я хотел бы сохранить:
{
id: 1,
name: 'test',
enabled: false,
configration: {
fid: 1,
fid2: 2,
fid3: 3
}
}
Проблема связана с полем конфигурации. Объект JSON получен в виде массива благодаря функции json_decode:
$data = json_decode($request->getContent(), true);
Поле конфигурации:
/**
* @ORM\Column(type="array")
*/
private $configuration = [];
Как я уже упоминал выше, я пробовал другие варианты, такие как:
массив (я начал с массива) - получаю ошибку: «Эта форма не должна содержать лишних полей». Затем я добавил 'allow_extra_field' как true в опции этого поля, но это привело к сохранению данных пустого объекта в БД.
json - ошибка получения "Это значение недопустимо.".
Я сделалеще один тест. Этот код генерирует ошибку (когда тип сущности установлен на массив):
$data['configuration'] = array(1);
$form->submit($data);
А этот нет (когда тип сущности установлен на массив):
$data['configuration'] = array();
$form->submit($data);
ПОЧЕМУ?
Я не знаю, как лучше всего хранить объект JSON, но я чувствую, что должен использовать тип массива. Однако я не знаю, почему возникает ошибка.