Doctrine ODM: PersistentCollection :: toArray возвращает пустой массив

Вот определение поля для основного документа:

/**
* @var ArrayCollection
* @MongoDB\ReferenceMany(
*      targetDocument="Some\Namespace\Document\Reference",
*      sort={"creationDate": "desc"},
*      simple=true
* )
* @Expose
* @Groups({"Main"})
* @Type("ArrayCollection<Some\Namespace\Document\Reference>")
* @var \Some\Namespace\Document\Reference[]
*/
protected $references;

Я пытался получить список основных документов и сериализовал их через JMS Serializer, но обнаружил, что ссылки — это пустой массив. После некоторого расследования я обнаружил, что для getReferences, документы возвращают экземпляр PersistentCollection для которого:

  • count возвращает 2 [хорошо]
  • getMongoData возвращает массив MongoIds [хорошо]
  • toArray возвращает пустой массив [неверный]

Похоже, это из-за инициализировать метод, который очищает mongoData.

Я достиг правильного результата с помощью следующего кода:

/**
* @VirtualProperty
* @SerializedName("reference_ids")
* @Groups("Main")
* @return array
*/
public function getReferenceIds()
{
$out = array();

foreach ($this->getReferences()->getMongoData() as $val) {
$out[] = (string)$val;
}

return $out;
}

Но это всего лишь ярлык, и я не думаю, что это правильное решение.

Если у кого-то есть идея, как получить эти идентификаторы или целые документы с помощью PersistentCollection и почему метод инициализации очищает mongoData?

Благодарю.

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]