我想从通过HTTP POST方式传递的数据创建并保存实体。
如何从实体中获取所需的所有字段,以便我的REST API方法可以检查是否已通过HTTP POST传递所有必需的数据(以实现新创建的实体),并发送带有错误的响应如果有任何缺失(例如"缺少所需的字段:"标题","消息" ...)?
答案 0 :(得分:1)
这样做的一种方法是Symfony 2的验证,就像评论中提到的Carlos Granados一样。可能是更清洁的解决方案。
无论如何,要回答这个问题:您可以使用Doctrines ClassMetadata
来检查字段是否可以为空:
$metadata = $entityManager->getClassMetadata('My\Entity\Class');
$isRequired = !$metadata->isNullable("myField");
并将其置于循环中以获取所有必填字段:
$metadata = $em->getClassMetadata('Application\Entity\Task');
$fieldNames = $metadata->getFieldNames();
$required = array();
foreach ($fieldNames as $fieldName) {
if(!$metadata->isNullable($fieldName)) {
$required[] = $fieldName;
}
}