Я работаю над приложением Symfony, которое использует MongoDB и Doctrine для соединения приложения с БД.Но теперь я добавил поле коллекции в один из документов, но содержимое этого поля всегда пусто, когда я запрашиваю его из базы данных через PHP, хотя оно не пусто, когда я возвращаю его непосредственно в оболочке MongoDB.
Более подробно: я добавил новое поле 'loginLast90Days' в существующий документ 'User' для хранения целых чисел времени в массиве:
<?php
namespace AppBundle\Document;
use Doctrine\Bundle\MongoDBBundle\Validator\Constraints\Unique as MongoDBUnique;
use Doctrine\ODM\MongoDB\Mapping\Annotations as MongoDB;
use Symfony\Component\Validator\Constraints as Assert;
/**
* @MongoDB\Document(collection="users")
* @MongoDBUnique(fields="{id, email}")
*/
class User
{
// ...
/**
* @MongoDB\Field(type="collection")
*/
protected $loginLast90Days;
// ...
/**
* Set loginLast90Days
*
* @param collection $loginLast90Days
* @return $this
*/
public function setLoginLast90Days($loginLast90Days)
{
$this->loginLast90Days = $loginLast90Days;
return $this;
}
/**
* Get loginLast90Days
*
* @return collection $loginLast90Days
*/
public function getLoginLast90Days()
{
return $this->loginLast90Days;
}
public function addLoginLast90Days($login)
{
$this->loginLast90Days[] = $login;
return $this;
}
public function removeLoginLast90Days($login)
{
$this->loginLast90Days->removeElement($login);
return $this;
}
// ...
}
Теперь я могу добавить целое число датыдля одного из пользовательских объектов:
$dm = $this->get('doctrine_mongodb');
$user = $dm->getRepository('AppBundle:User')->findOneBy(array('gmail' => $email));
$user->addLoginLast90Days(time());
$dm = $this->get('doctrine_mongodb')->getManager();
$dm->persist($user);
$dm->flush();
Теперь, когда я нахожу объект с помощью оболочки Mongo, я вижу новое значение в поле.Но в следующий раз, когда я добавлю значение к объекту, массив в PHP будет пустым, хотя я вижу в БД, что он не должен быть пустым.
У кого-нибудь есть идея, где моя ошибка?Я забыл правильно сопоставить поле с БД или что-то в этом роде?
Заранее большое спасибо!
Редактировать: Вот конструктор документа пользователя:
public function __construct($customerId, $refreshToken, $canManageCustomers)
{
$this->customerId = $customerId;
$this->refreshToken = $refreshToken;
$this->canManageCustomers = $canManageCustomers;
$this->isActive = true;
$this->accountLevel = "basic";
$this->isRegistered = false;
$this->createdAt = new \MongoDate();
}