Symfony-如何使用默认值反序列化?

Symfony-如何使用默认值反序列化?,symfony,jms-serializer,Symfony,Jms Serializer,我开始学习Symfony 4了 我想从json数据中反序列化数据。我在用JMSSerializer 这是我的背景: 我在src/App/entity中有一个客户实体 class Customer { /** * * @ORM\Id * @ORM\Column(type="integer") * @ORM\GeneratedValue(strategy="AUTO") */ private $id; /** *

我开始学习Symfony 4了

我想从json数据中反序列化数据。我在用JMSSerializer

这是我的背景: 我在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 = "";
    }
}
我在src/App/controller中有一个CustomerController控制器

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

使用参数[Resource id 99,Customer Lambda,null]执行“插入到客户id,名称,注释值?,?,?,?”时发生异常:

SQLSTATE[23000]:完整性约束冲突:1048列“注释” 不能为空


是否可以在反序列化后为注释字段设置默认值空字符串?我原以为在客户构造函数中设置它可以解决问题,但事实并非如此。

1º如果将注释定义为不可为空,为什么要尝试设置空字符串

这:

相反,这是:

 /**
 * @ORM\Column(type="string", length=250)
 * @Assert\NotNull
 */
private $comment;

public function __construct() {
$this->comment = "";
}

我通常初始化构造函数中的字段。只需做简单的事情,它就可以工作了:-事实上,我将一个SQL Server数据库迁移到MySQL,并且我没有更改一些不可为空的条件,这些条件与此无关。。。
 /**
 * @ORM\Column(type="string", length=250)
 * @Assert\NotNull
 */
private $comment;

public function __construct() {
$this->comment = "";
}