Тип данных Symfony 4 Rest API Doctrine2 для структуры JSON - PullRequest
0 голосов
/ 06 ноября 2019

У меня проблема с сохранением объекта 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, но я чувствую, что должен использовать тип массива. Однако я не знаю, почему возникает ошибка.

...