4

我正在使用来自 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;
}

当我创建并保留一个新文档而不设置值或引用时,我没有收到任何错误。我是否误解了 nullable 选项的使用,需要在生命周期回调中调用验证代码,错误地使用注释,或者可能是 Doctrine 中的错误?

4

2 回答 2

2

如果您查看注释参考,设置nullable=false并不意味着它将无法对空值进行验证。

从文档:

可空 - 默认情况下,$unset如果 PHP 值为空,ODM 将在 MongoDB 中字段。将此选项指定为 true 以强制 ODM 在数据库中存储空值,而不是取消设置该字段。

于 2015-07-28T17:23:31.350 回答
1

use Symfony\Component\Validator\Constraints as Assert;

/** * @mongodb\Field(name="name", type="string") * @Assert\NotBlank() */ private $name;

希望你能得到线索。

于 2014-04-20T10:38:45.120 回答