我使用了git存储库中的Doctrine MongoDB ODM和Symfony2的主分支以及mongo扩展1.2.10。
我创建了许多类似于以下注释的类/文档:
namespace Acme\StoreBundle\Document;
use Doctrine\ODM\MongoDB\Mapping\Annotations as MongoDB;
/**
* @MongoDB\Document
*/
class Person
{
/**
* @MongoDB\Id
*/
protected $id;
/**
* @MongoDB\String(nullable=false)
*/
protected $name;
/**
* @MongoDB\ReferenceOne(targetDocument="PersonType", inversedBy="person", nullable=false)
*/
protected $personType;
}
当我创建并保留新文档而未设置值或引用时,我没有收到任何错误。我是否误解了可以为空的选项的使用,并且需要在生命周期回调中调用验证代码,使用错误的注释,或者可能是Doctrine中的错误?
答案 0 :(得分:2)
如果您查看annotation reference,则设置nullable=false
并不意味着它将无效验证空值。
来自文档:
nullable - 默认情况下,如果PHP值为null,ODM将在MongoDB中显示
$unset
个字段。为此选项指定true以强制ODM在数据库中存储空值,而不是取消设置字段。
答案 1 :(得分:1)
use Symfony\Component\Validator\Constraints as Assert;
/**
* @mongodb\Field(name="name", type="string")
* @Assert\NotBlank()
*/
private $name;
希望你能得到线索。