у меня есть 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 | {} |
+----+------+
В чем проблема?
Тип json_array
ожидает массив, который затем будет преобразован в json с использованием json_encode. Хотя Doctrine ArrayCollection технически проходима, она не может быть преобразована в массив. Так что вам либо нужно позвонить ->toArray()
на нем или измените свой тип, чтобы просто быть array
$entity->setTels($theArrayCollection->toArray());
Других решений пока нет …