2016-08-05 62 views
2

我已經在文件描述添加新條目的Symfony的MongoDB無法檢索新的字段值

/** 
* @MongoDB\Field(type="string") 
*/ 
protected $city; 

然後讓教義產生的實體。現在新創建的記錄具有預期值的新字段「城市」。不過,我只能在mongo控制檯中看到這些值。在Doctrine輸出中,它們總是被設置爲「null」。實體條目似乎是正確的

public function getFirstName() 
{ 
    return $this->firstName; 
} 

/** 
* Get city 
* 
* @return string $city 
*/ 
public function getCity() 
{ 
    return $this->city; 
} 

我有倉庫

public function allQuery($cat) 
{ 
    $q = $this->createQueryBuilder() 
     ->sort('createdAt', 'DESC'); 

    if ($cat) { 
     $q->field('category.$id')->equals(new \MongoId($cat)); 
    } 
    return $q; 
} 

和服務

function addAllPager($perPage = 10, $cat) 
{ 
    return $this->_addPager($this->repo()->allQuery($cat), $perPage); 
} 

在控制器

$helper = $this->get('appbundle.test.helper'); 
    $tests = $helper->addAllPager(10, $cat); 

Symfony的探查表明我查詢db.Test.find().sort({ "createdAt": -1 }).limit(10).skip(0)。 $測試的傾銷內容

#firstName: "John" 
#city: null 

我失蹤了什麼?

編輯

緩存清除php bin/console cache:clear解決了這個問題。 php bin/console doctrine:mongodb:cache:clear-metadata還不夠。謝謝malarzm

+1

請清除緩存並重新啓動Apache,這種情況通常源於未更新的水化器或尚未更新的緩存元數據。 – malarzm

回答

0

我知道這是8個月後問題已被問到,但有同樣的問題,並爭取了一段時間的教條。我正在使用Symfony 3,我試過php bin/console doctrine:mongodb:cache:clear-metadata,但沒有運氣。

我終於運行了命令php bin/console cache:clear或者只是用這個命令刪除緩存sudo rm -rf var/cache並解決了這個問題。