我有一个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_encode 将其转换为 json。虽然 Doctrine ArrayCollection 在技术上是可遍历的,但它不能很好地转换为数组。因此,您需要对其调用 ->toArray()
或将类型更改为 array
$entity->setTels($theArrayCollection->toArray());
关于php - Doctrine 不存储 ArrayCollection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26684756/