0

FOSUserBundle がインデックスを作成しないことに気付きました。

次のようなユーザー ドキュメントを作成することになっています。

use FOS\UserBundle\Document\User as BaseUser;
use Doctrine\ODM\MongoDB\Mapping\Annotations as MongoDB;

/**
 * @MongoDB\Document
 */
class User extends BaseUser
{
    /**
     * @MongoDB\Id(strategy="auto")
     */
    protected $id;

    /*
    public function __construct()
    {
        parent::__construct();
        // your own logic
    }
    */

}

では、「メール」フィールドにインデックスを追加するにはどうすればよいでしょうか。継承された属性を上書きする必要がありますか?

4

1 に答える 1

1

実際には FOSUserBundle が作成します。あなたは実行する必要があります

php app\console doctrine:mongodb:schema:update

それらを作成します。デフォルトでは、usernameCanonical および emailCanonical インデックスがあります。

カスタム インデックスが必要な場合は、次のアプローチを使用します。

<?php
/**
 * @MongoDB\Document
 * @MongoDB\Indexes({
 *   @MongoDB\Index(keys={"email"="asc"})
 * })
 */
class User extends BaseUser {
  // ...

doctirne:mongodb:schema:updateタスクを再度実行することを忘れないでください。

于 2012-09-21T10:25:51.523 に答える