2016-08-05 1 views
2

Я добавил новую запись в описании документаSymfony MongoDb не может получить новое поле значения

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

Тогда пусть Doctrine генерировать объекты. Теперь вновь созданные записи имеют новое поле «город» со значениями, как ожидалось. Однако я вижу эти значения только в консоли 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 и устранил проблему.