symfony - Symfony - 如何使用默认值反序列化?
问题描述
我开始学习 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] 执行 'INSERT INTO customers (id, name, comment) VALUES (?, ?, ?, ?)' 时发生异常:
SQLSTATE [23000]:违反完整性约束:1048 列“注释”不能为空
反序列化后是否可以为注释字段设置默认值(空字符串)?我在想在 Customer 构造函数中设置它可以解决问题,但事实并非如此。
解决方案
1º 如果您已将注释定义为不可为空,为什么还要尝试设置空字符串。
2º
这:
/**
* @ORM\Column(type="string", length=250)
* @Assert\NotNull
*/
private $comment = "";
public function __construct() {
}
取而代之的是:
/**
* @ORM\Column(type="string", length=250)
* @Assert\NotNull
*/
private $comment;
public function __construct() {
$this->comment = "";
}
推荐阅读
- ios - 使用 Ionic 从 iOS Settings-MyApp 读取应用程序设置值
- python - 与另一个数据框合并后无法选择特定列
- javascript - 如何查找前一个字符是否相同
- tensorflow - 如何从`tf.data.Dataset`的填充批次中获取序列长度?
- group-by - group by if partition by used or not used的效果
- sql-server - Chocolatey:安装 SQL SERVER DEVELOPER 版抛出错误
- javascript - 将来自 firestore 查询的数据添加到数组对象并将它们映射到 Picker react native
- tinymce-5 - TinyMCE 如何支持从 Word 粘贴的内容中的分页符
- python-3.x - 当标签不在本体中但可以在 URI 中找到时,从 owl 本体中提取标签
- nestjs - 将 nestjs DI 与类验证器一起使用