我的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 | {} |
+----+------+
有什么问题?
答案 0 :(得分:2)
类型json_array
需要一个数组,然后使用json_encode将其转换为json。虽然Doctrine ArrayCollection在技术上是可遍历的,但它并不能很好地转换为数组。因此,您需要在其上调用->toArray()
或将类型更改为array
$entity->setTels($theArrayCollection->toArray());