Php 将仅带字符串的ArrayCollection持久化到MySQL数据库
我将ArrayCollection类型的字段持久化到只包含stings的MySQL数据库。数据库字段在ORM定义中为“array”类型,在数据库中为TEXT类型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
/**
* @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_数组作为一种类型可以工作。我希望它以更干净的方式保存在数据库中,输出没有问题。