4

Doctrine MongoDB ODM の master ブランチと git リポジトリの 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は null 値の検証に失敗するという意味ではありません。

ドキュメントから:

nullable - デフォルトでは$unset、PHP 値が null の場合、ODM は MongoDB のフィールドになります。このオプションに true を指定すると、フィールドを設定解除する代わりに、ODM が強制的にデータベースに null 値を格納します。

于 2015-07-28T17:23:31.350 に答える