Php 将仅带字符串的ArrayCollection持久化到MySQL数据库

Php 将仅带字符串的ArrayCollection持久化到MySQL数据库,php,mysql,json,symfony,doctrine-orm,Php,Mysql,Json,Symfony,Doctrine Orm,我将ArrayCollection类型的字段持久化到只包含stings的MySQL数据库。数据库字段在ORM定义中为“array”类型,在数据库中为TEXT类型 /** * @var ArrayCollection * * @ORM\Column(name="currencies", type="array") */ private $currencies; 持久化时,在数据库中看起来如下所示: O:43:"Doctrine\Common\Collections\ArrayCollec

我将ArrayCollection类型的字段持久化到只包含stings的MySQL数据库。数据库字段在ORM定义中为“array”类型,在数据库中为TEXT类型

/**
 * @var ArrayCollection
 *
 * @ORM\Column(name="currencies", type="array")
 */
private $currencies;
持久化时,在数据库中看起来如下所示:

O:43:"Doctrine\Common\Collections\ArrayCollection":1:{s:54:"Doctrine\Common\Collections\ArrayCollection_elements";a:3:{i:0;s:3:"EUR";i:1;s:3:"USD";i:2;s:3:"GBP";}}
有没有办法将更接近json数组的内容放入数据库?大概是这样的:

['EUR', 'USD', 'GBP']

为什么要将ArrayCollection设置为$Currences属性? 为什么不使用数组呢


您也可以使用“json_数组”原则类型而不是“数组”。

原则在插入数据库时使用PHP函数
serialize()

/**
 * @var ArrayCollection
 *
 * @ORM\Column(name="currencies", type="array")
 */
private $currencies;
获取时,它使用
反序列化()

您只需使用:
echo json_encode($entity->getcurrences())


另请参见此问题:

为什么要使用ArrayCollection而不是array?因为它更容易处理。json_数组作为一种类型可以工作。我希望它以更干净的方式保存在数据库中,输出没有问题。