Doctrine MongoDB ODM nullable = false不起作用

时间:2012-07-11 16:44:58

标签: mongodb symfony doctrine-orm nullable doctrine-odm

我使用了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中的错误?

2 个答案:

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

希望你能得到线索。