Doctrine не хранит ArrayCollection

у меня есть Entity у которого есть поле массива как это:

...
/**
* @var array
*
* @ORM\Column(name="tels", type="json_array")
*/
private $tels;
...

Я заполняю это, используя форму, и она заполняется правильно, как после отправки var_dump($entity->getTels()) возвращает это:

object(Doctrine\Common\Collections\ArrayCollection)[448]
private '_elements' =>
array (size=1)
0 => string '123' (length=3)

Но после сохранения доктрина игнорирует значение этого поля и сохраняет пустой массив:

+----+------+
| id | tels |
+----+------+
|  1 | {}   |
+----+------+

В чем проблема?

2

Решение

Тип json_array ожидает массив, который затем будет преобразован в json с использованием json_encode. Хотя Doctrine ArrayCollection технически проходима, она не может быть преобразована в массив. Так что вам либо нужно позвонить ->toArray() на нем или измените свой тип, чтобы просто быть array

$entity->setTels($theArrayCollection->toArray());
2

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

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

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