Я начинаю изучать Symfony 4.
Я хочу десериализовать данные из данных JSON. (Я использую JMSSerializer)
Это мой контекст:
У меня есть сущность Customer в src / App / Entity
class Customer {
/**
*
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\Column(type="string", length=250)
* @Assert\NotBlank()
*/
private $name;
/**
* @ORM\Column(type="string", length=250)
* @Assert\NotNull
*/
private $comment;
public function __construct() {
$this->comment = "";
}
}
У меня есть контроллер CustomerController в src / App / Controller
class CustomerController extends Controller
{
/**
* @Route("/customers", name="customer_create")
* @Method({"POST"})
*/
public function createAction(Request $request)
{
$data = $request->getContent();
//Il faudrait valider les données avant de les mettre en base de données
$customer = $this->get('jms_serializer')->deserialize($data, 'App\Entity\Customer', 'json');
$em = $this->getDoctrine()->getManager();
$em->persist($customer);
$em->flush();
return new Response('', Response::HTTP_CREATED);
}
}
Я отправляю запрос на создание клиента со следующими данными JSON:
{"name":"Customer Lambda"}
но у меня следующая ошибка
NotNullConstraintViolationException
Возникла исключительная ситуация при выполнении 'INSERT INTO клиентов (идентификатор, имя, комментарий) VALUES (?,?,?,?)' С параметрами [идентификатор ресурса № 99, "Лямбда клиентов", ноль]:
SQLSTATE [23000]: нарушение ограничения целостности: 1048 столбец «комментарий»
не может быть нулевым
Можно ли установить значение по умолчанию (пустую строку) для поля комментария после десериализации? Я думал, что установка его в конструкторе Customer решит проблему, но это не так.