如何检查Doctrine中是否需要字段?

时间:2015-10-26 19:20:35

标签: symfony doctrine-orm annotations

我想从通过HTTP POST方式传递的数据创建并保存实体。

如何从实体中获取所需的所有字段,以便我的REST API方法可以检查是否已通过HTTP POST传递所有必需的数据(以实现新创建的实体),并发送带有错误的响应如果有任何缺失(例如"缺少所需的字段:"标题","消息" ...)?

1 个答案:

答案 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;
    }
}