Symfony-如何使用默认值反序列化?
我开始学习Symfony 4了 我想从json数据中反序列化数据。我在用JMSSerializer 这是我的背景: 我在src/App/entity中有一个客户实体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; /** *
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º如果将注释定义为不可为空,为什么要尝试设置空字符串 2º 这: 相反,这是:
/**
* @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 = "";
}