Как сохранить нулевые данные с помощью Api-Platform?Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Как сохранить нулевые данные с помощью Api-Platform?

Сообщение Anonymous »

С Symfony 5.1 и платформой Api я не могу эффективно обрабатывать сохранение данных NULL.
Примеры для этой простой сущности:

Код: Выделить всё

class Foo
{
/**
* @var string
*
* @ORM\Column(type="string")
* @Assert\NotBlank()
*/
public $name;

/**
* @var string
*
* @ORM\Column(type="text", nullable=true)
*/
public $content;
}
Пример 1 ( запрос):

Код: Выделить всё

{
"name": "",
"content": ""
}
Я согласен, это хороший результат (ConstraintViolationList) :

Код: Выделить всё

{
"@context": "/api/contexts/ConstraintViolationList",
...
"violations": [
{
"propertyPath": "name",
"message": "This value should not be blank."
}
]
}
Пример 2 ( запрос):

Код: Выделить всё

{
"name": "test",
"content": ""
}
Регистрация в базе данных проходит успешно. В базе данных для значения содержимого у меня есть "". Но я хочу сохранить NULL.
Поэтому я понимаю, что платформа Api не умеет преобразовывать пустые данные () в NULL данные, как это сделал бы Symfony после отправки пустой формы.
Поэтому я пробую Пример 1 еще раз, но с NULL данные, чтобы убедиться, что утверждения по-прежнему работают.

Код: Выделить всё

{
"name": null,
"content": null
}
Это не работает, у меня нет ошибки ConstraintViolationList:

Код: Выделить всё

{
"@context": "/api/contexts/Error",
...
"hydra:description": "The type of the "name" attribute must be "string", "NULL" given.",
}
Итак, как мне обработать нулевые данные, чтобы, если они пусты и обязательны, у меня был список ошибок (

Код: Выделить всё

ConstraintViolationList
), но если это необязательно, то данные регистрируются как NULL и без "" ?
Это было бы обидно и очень-очень утомительно приходится управлять отправкой данных по-разному в зависимости от того, являются ли они обязательными или нет (иногда отправляйте "", а иногда NULL).

Подробнее здесь: https://stackoverflow.com/questions/655 ... i-platform
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»