2014-05-15 29 views
0

我在Symfony 2上爲MongoDB安裝了FOSUserBundle,我想添加一些自定義字段,但它們總是空的。在Symfony 2和MongoDB中爲FOSUserBundle添加屬性

我UserBundle:

<?php 
namespace Skurty\UserBundle\Document; 

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

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

    /** 
    * @MongoDB\String 
    */ 
    protected $test; 

    public function setTest($test) 
    { 
     $this->test = $test; 
    } 

    public function getTest() 
    { 
     return $this->test; 
    } 
} 

控制器(未在同捆的UserBundle):

$user = $this->getUser(); 

// or 

$user = $this->get('doctrine_mongodb') 
    ->getRepository('SkurtyUserBundle:User') 
    ->find(new \MongoId('...')); 

// $user->getUsername() => 'skurty' 
// $user->getTest() => null 

而且MongoDB的文檔:

{ "_id" : ObjectId("..."), "username" : "skurty", /* FOSUserBundle fields */, "test" : "abc" } 

有什麼不對?

謝謝

+0

您是否清除了緩存?這可能是一個結果緩存問題。 – nifr

+0

就是這樣,我完全忘了看它(我只更新了mongodb模式)......所以問題解決了,謝謝! – skurty

+0

很高興我能幫忙:) – nifr

回答

1

你需要更新你的數據庫模式和清除緩存以使更改生效。

否則,您最終可能會收到不反映數據庫中當前數據的緩存結果。