Doctrine不存储ArrayCollection

时间:2014-10-31 23:17:44

标签: php symfony doctrine-orm 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 | {}   |
+----+------+

有什么问题?

1 个答案:

答案 0 :(得分:2)

类型json_array需要一个数组,然后使用json_encode将其转换为json。虽然Doctrine ArrayCollection在技术上是可遍历的,但它并不能很好地转换为数组。因此,您需要在其上调用->toArray()或将类型更改为array

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